单例和异常
设计可能引发异常的单例类的最佳方法是什么?
在这里,我有一个辛格尔顿(使用比尔·皮尤的方法,记录在单例的Wiki中)。
private static class SingletonObjectFactoryHolder{
//1
private static final ObjectFactory INSTANCE = new ObjectFactory();
}
private ObjectFactory() throws Exception{
//2
//create the factory
}
public static ObjectFactory getInstance(){
//3
return SingletonObjectFactoryHolder.INSTANCE;
}
如果在2处引发异常,我想将其传播给调用方。但是,我不能从第 1 行引发异常。
那么,如果单例对象创建不正确,我唯一的选择是返回空对象吗?
谢谢
P.S 我确实意识到,如果它通过不同的类加载器加载或者条件反射地加载,这个Singleton可能会中断,但它对于我的目的来说已经足够好了。
更新
我很好奇,我能不能像下面那样重新排列我的设计以抛出异常?
另外,我不需要任何同步(类装入器保证静态内部类只会加载一次,并且仅在调用getInstance()时加载)。因此,线程安全和懒惰的实例化?
private static class SingletonObjectFactoryHolder{
//1
public static ObjectFactory getInstance() throws Exception{
return new ObjectFactory();
}
}
private ObjectFactory() throws Exception{
//2
//create the factory
}
public static ObjectFactory getInstance(){
//3
return SingletonObjectFactoryHolder.getInstance();
}
再次感谢。