Java의 catch 블록에서 명령문 실행 순서에 대한 질문이 있습니다. 다음 클래스 Test1 (아래 참조)을 실행할 때 출력이 처음으로 Hi !, e.printStackTrace(); 성명서, 그리고 안녕!. 그러나, 나는이 순서를 결코 얻지 않는다. 제가 아래에 붙여 넣은 결과물을보십시오.Java의 try-catch 블록 - 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();
}
}
출력 1 :
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() 문을 출력하는 경우가 종종 있는데, 때로는 안녕히 가십시오! ? 나는 프로그램을 여러 번 실행했으며 어느 상황에서 하나 또는 다른 인쇄물을 얻는 지 이해할 수 없습니다.
감사합니다.
Java 6 및 Eclipse (Ganymed)를 사용하고 있습니다. "Hi!
"및 "Bye!
"System.err
반면에
Throwable # printStackTrace()에 스트림을 지정할 수 있습니다. e.printStackTrace (System.out) –