Каков наилучший способ разработки одноэлементного класса, который может вызвать исключение?
Здесь у меня есть Singleton (используя метод Билла Пью, описанный в Wiki для Singleton).
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 Я понимаю, что этот синглтон может сломаться, если он загружен через разные загрузчики классов или если загружен рефлексивно, но он достаточно хорош для моей цели.
// UPDATE
Мне любопытно, не могу ли я изменить свой дизайн, как показано ниже, для исключения?
Кроме того, мне не нужна синхронизация (загрузчик классов гарантирует, что статический внутренний класс будет загружен только один раз и только при вызове 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();
}
Еще раз спасибо.