java使单例模式代码更强大
public class SingletonDoubleCheckedLock {
private volatile static SingletonDoubleCheckedLock uniqueInstance;
private SingletonDoubleCheckedLock() {
}
public static SingletonDoubleCheckedLock getInstance() {
if (uniqueInstance == null) {
synchronized (SingletonDoubleCheckedLock.class) {
if (uniqueInstance == null) {
uniqueInstance = new SingletonDoubleCheckedLock();
}
}
}
return uniqueInstance;
}
}
如果在运行getInstance()
方法时发生任何错误(例如,在执行new SingletonDoubleCheckedLock()
但内存不足时),并且我仍然希望getInstance()
方法返回正确的结果。如何做到这一点
# 1 楼答案
问题:“如果在运行getInstance()方法时出现任何错误……我仍然希望getInstance()方法返回正确的结果。如何实现这一点?”
简单回答:你不能保证
有大量的条件可以抛出
Throwable
有两种主要类型(子类)
Throwable
:Exception
和Error
Exception
用于指示应用程序中可能出现的阻止正常执行流的情况,应用程序可能会在继续之前捕获并纠正该情况。最终必须捕获某些形式的异常(已检查的异常)Error
用于指示应用程序无法恢复的严重异常状况,其原因可能超出应用程序的控制范围。你可以捕捉到一个错误,但这没有多大意义,因为情况可能无法恢复如您所见,如果
getInstance()
抛出错误,那么在应用程序运行时,您将无能为力。只有在发生异常时,你才有机会恢复