看看下面的代码片段:
A a = null
try {
a = new A();
} finally {
a.foo(); // What happens at this point?
}
假设 A 的构造函数抛出运行时异常。在标记的行,我是否总是保证会得到 NullPointerException,或者 foo() 将在半构造的实例上被调用?
最佳答案
try
block 中的代码包含两个不同的操作:
- 创建一个新的
A
实例。 - 将新实例分配给名为
a
的变量。
如果第1步抛出异常,第2步将不会执行。
因此,您将始终得到一个 NullPointerException
。
关于java - `return value' 来自 Java 中的构造函数异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2474267/