考虑以下代码:
final MyClass myObject;
try {
myObject = new MyClass(...)
} catch (MyClassException){
// terminate
System.exit(1);
}
myObject.doSomething();
Run Code Online (Sandbox Code Playgroud)
问题是Netbeans编辑器/解析器认为.doSomething()可以在一个单元化对象上调用,当然,情况并非如此.
有没有正常/标准的模式来规避这个?我可以调用函数但不愿意这样做.我还宁愿不将整个块包含在try catch块中,因为没有别的东西会抛出MyClassException
我不是(还是;-))Java语法和模式方面的专家,所以我希望我遗漏了一些明显的东西.
您在try块中初始化对象,这可能会抛出异常,使对象未初始化.
在你的catch块中,你停止你的程序,但System.exit(1)不会停止方法执行,而是终止当前运行的JVM - 而对于编译器,它只是在抛出异常时调用的另一种方法.
return实际上会停止执行方法 - 因此不会超出任何代码return;.您可以catch按如下方式修改块:
catch (MyClassException){
// terminate
System.exit(1);
return;
}
Run Code Online (Sandbox Code Playgroud)
编译器不会抱怨myObject没有以这种方式初始化.
编辑
注意:如果你myObject.doSomething();输入finally块编译器会抱怨,因为finally即使在执行之后也是如此return.
finally {
// compiler error
myObject.doSomething();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
144 次 |
| 最近记录: |