我有最后一个成员的数据最终的变量初始化:确保当一个构造函数抛出异常
public final Foo foo;
在构造
,foo
被初始化如下:
foo = new Foo();
现在,不幸的是,Foo的构造函数可能会抛出一个异常:
try {
foo = new Foo();
} catch (Exception e) {
e.printStackTrace();
}
但是现在编译器公司mplains foo可能未被初始化,如果Foo的构造函数抛出异常,则为true。但是,如果我把foo = null
放在收集括号内,它会抱怨foo可能已经被初始化。
Foo是我无法修改的第三方库。
那么,处理这个问题的最优雅的方式是什么?
即使没有try/catch块,我也没有收到编译器的投诉。你是否让你的类的构造函数抛出了Foo引发的异常? – 2012-04-09 19:49:48