给出下面的代码:
输出,会是什么呢?
thrown 2
thrown 3
还是
thrown 2
答案是第二种情况,为什么呢?
[img]/upload/attachment/51478/b6d824cc-cbf5-3aad-870a-1eb27fca4061.gif[/img]
因为异常没有被捕获,也就是在try catch块中没有被消化,这样的话会向向上一级提交异常,所以不会执行到thrown 3来了,我的理解对不对呢?
package scjp;
public class Demo248 {
public static void main(String[] args) {
try{
throw new ExceptionInInitializerError();
}catch(NullPointerException e) {
System.out.println("thrown 1");
}finally {
System.out.println("thrown 2");
}
System.out.println("thrown 3");
}
}
输出,会是什么呢?
thrown 2
thrown 3
还是
thrown 2
答案是第二种情况,为什么呢?
[img]/upload/attachment/51478/b6d824cc-cbf5-3aad-870a-1eb27fca4061.gif[/img]
因为异常没有被捕获,也就是在try catch块中没有被消化,这样的话会向向上一级提交异常,所以不会执行到thrown 3来了,我的理解对不对呢?