Lui*_*Sep 7 java compiler-errors exception unchecked
我有一些这种结构的代码:
public void method() {
Object o;
try {
o = new Object();
} catch (Exception e) {
//Processing, several lines
throw new Error(); //Our own unchecked exception
}
doSomething(o);
}
Run Code Online (Sandbox Code Playgroud)
我有很多方法,我在catch块中有相同的代码,所以我想将它提取到一个方法,以便我可以保存一些行.我的问题是,如果我这样做,我得到编译器错误"局部变量o可能没有被初始化".
public void method() {
Object o;
try {
o = new Object();
} catch (Exception e) {
handleError();
}
//doSomething(o); compiler error
}
private void handleError() throws Error {
//Processing, several lines
throw new Error();
}
Run Code Online (Sandbox Code Playgroud)
有没有解决方法?
您需要在使用之前初始化局部变量,如下所示
public void method() {
Object o=null;
try {
o = new Object();
} catch (Exception e) {
handleError();
}
doSomething(o);
}
Run Code Online (Sandbox Code Playgroud)
在使用未初始化的局部变量之前,您将无法获得编译失败
由于o在块内进行初始化try并且初始化o可能会引发异常,因此 java 认为该doSomething(o)语句可能会在未o初始化的情况下到达。所以java想要o初始化以防new Object()抛出异常。
所以初始化o可以null解决这个问题
public void method() {
Object o = null;
try {
o = new Object(); //--> If new Object() throws exception then o remains uninitialized
} catch (Exception e) {
handleError();
}
if(o != null)
doSomething(o);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14966 次 |
| 最近记录: |