我对 Java 中的 catch 块中语句的执行顺序有疑问。当我运行以下类 Test1(见下文)时,我希望首先输出 Hi!,然后是 e.printStackTrace(); 声明,然后再见!但是,我从来没有收到过这个订单。请查看我在下面粘贴的输出。
public class Test1 {
public static void calculate() {
try {
int h = 5/0;
} catch (ArithmeticException e) {
System.out.println("Hi!");
e.printStackTrace();
}
System.out.println("Bye!");
}
public static void main(String[] args) {
calculate();
}
}
输出1:
你好! 再见! java.lang.ArithmeticException: / 由零 在 Test1.calculate(Test1.java:6) 在 Test1.main(Test1.java:15)
输出2:
java.lang.ArithmeticException: / 由零 在 Test1.calculate(Test1.java:6) 在 Test1.main(Test1.java:15) 你好! 再见!
我有两个问题:
1.)更重要的问题:为什么我总是有嗨!再见!总是一个接一个地打印,即使代码中的 mye.printStackTrace() 在它们之间?
2.) 为什么有时我在 Hi! 之前有语句 e.printStackTrace() 的输出,有时在再见!? 我已经多次运行该程序,但我无法理解在什么情况下我会得到一份或另一份打印。
谢谢你。
我正在使用 Java 6 和 Eclipse (Ganymed)。