开发者

`return value' from Constructor Exception in Java?

Take a look that the following code snippet:

A a = null
try {
  a = new A();
} finally {
  a.foo();  // What happens at this point?
}

Suppos开发者_开发知识库e 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:

  1. Create a new A instance.
  2. Assign the new instance to a variable named 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 the exception occured in the constructor call new A(),That time the object has null value.So the a.foo() gives the null pointer exception.you can give the condition as if(a!=null){ a.foo(); }

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜