Take a look that the following code snippet:
A a = null
try {
a = new A();
} finally {
a.foo(); // What happens at this point?
}
Suppose A's constructor throws a runtime exception. At the marked line, am I always guaranteed to get a NullPointerException, or foo() will get invoked on a half constructed instance?
The code inside the try
block contains two distinct operations:
A
instance.a
.If an exception is thrown in step 1, step 2 will not be executed.
Therefore, you will always get a NullPointerException
.
If new A()
raises an exception, you'll always get a NullPointerException because the assignment to a
won't happen.
I think you would always get an NPE at the marked line. The assignment never has a chance to occur.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With