У меня есть вопрос о порядке выполнения операторов в блоке catch в Java.
когда я запускаю следующий класс 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();
}
}
Output1:
Hi!
Bye!
java.lang.ArithmeticException: / by zero
at Test1.calculate(Test1.java:6)
at Test1.main(Test1.java:15)
Выход2:
java.lang.ArithmeticException: / by zero
at Test1.calculate(Test1.java:6)
at Test1.main(Test1.java:15)
Hi!
Bye!
У меня два вопроса:
1.) Более важный вопрос: почему у меня всегда привет! и пока! печатается всегда один за другим, хотя mye.printStackTrace () в коде находится между ними?
2.) Почему иногда у меня вывод команды e.printStackTrace () до Hi !, а иногда после Bye! ? Я запускал программу много раз, и я не могу понять, при каких обстоятельствах я получаю тот или иной отпечаток.
Спасибо.
Я использую Java 6 и Eclipse (Ganymed).