我发现一个有趣的案例:
public static void main(String[] args) {
int a =0;
int b = 2;
int c = 10;
int d = 0;
int e = 0;
try {
d=c/b;
e=b/a;
}catch (ArithmeticException ex){
System.out.println("TEST");
ex.printStackTrace();
}
System.out.println(d);
}
将有两种打印顺序:
1个
TEST
java.lang.ArithmeticException: / by zero
at Chapter10.Test2.main(Test2.java:14)
5
2个
java.lang.ArithmeticException: / by zero
at Chapter10.Test2.main(Test2.java:14)
TEST
5
但是,当我评论该行时System.out.println("TEST");,将只有一个顺序:
5
java.lang.ArithmeticException: / by zero
at Chapter10.Test2.main(Test2.java:14)
所以我想问一下try-catch块的执行顺序是什么顺序?为什么System.out.println(d);在catch发生异常时执行before块?
倚天杖
墨色风雨
相关分类