J'ai une question sur l'ordre d'exécution des instructions dans un bloc catch en Java. lorsque je lance la classe Test1 suivante (voir ci-dessous), je m'attends à avoir en sortie Hi !, puis le résultat de l'e.printStackTrace(); déclaration, puis Bye !. Cependant, je ne reçois jamais cet ordre. S'il vous plaît, regardez les sorties, que j'ai collées ci-dessous.bloc try-catch en Java - instructions d'exécution dans le code catch
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();
}
}
Sortie1:
Hi! Bye! java.lang.ArithmeticException:/by zero at Test1.calculate(Test1.java:6) at Test1.main(Test1.java:15)
Output2:
java.lang.ArithmeticException:/by zero at Test1.calculate(Test1.java:6) at Test1.main(Test1.java:15) Hi! Bye!
J'ai deux questions:
1.) La question la plus importante: pourquoi j'ai toujours Salut! et Bye! imprimé toujours l'un après l'autre, même si mye.printStackTrace() dans le code est entre eux?
2.) Pourquoi parfois j'ai la sortie de l'instruction e.printStackTrace() avant Hi !, et parfois après Bye! ? J'ai exécuté le programme plusieurs fois et je ne peux pas comprendre dans quelles circonstances j'obtiens l'un ou l'autre impression.
Merci. J'utilise Java 6 et Eclipse (Ganymed). J'utilise Java 6 et Eclipse (Ganymed).
Notez que vous pouvez spécifier le flux pour Throwable # printStackTrace(), par ex. e.printStackTrace (System.out) –