코린이의 소소한 공부노트

예외 메시지 출력 본문

Java

예외 메시지 출력

무지맘 2022. 5. 24. 16:25

try 블록을 실행하다가 예외가 발생하게 되면 해당 예외 타입의 객체가 발생하게 된다. 이때 이 객체에는 여러 가지 정보가 들어있는데, 그중 이번에 볼 것은 메서드 2가지이다.

1. printStackTrace()

  - 예외 발생 당시의 호출 스택(call stack)에 있었던 메서드 정보와 예외 메시지를 화면에 출력한다.

2. getMessage()

  - 발생한 예외 클래스의 인스턴스에 저장된 메시지를 얻는다.

 

0으로 나누는 산술 예외를 발생시켜서 어떤 메시지를 얻을 수 있는지 살펴보자.

class Test{
    public static void main(String args[]) {
        System.out.println(1);
        try {
            System.out.println(2);
            System.out.println(3/0); // 예외 발생
            System.out.println(4); // 실행X
        } catch(ArithmeticException ae){
            ae.printStackTrace();
            System.out.println("예외메시지 : " + ae.getMessage());
        } catch(Exception e) {
            System.out.println(5); // 실행X
        }
        System.out.println(6);
    }
}

 1) try 블록을 실행하다가 0으로 나누려는 코드 발견!

  - ArithmeticException타입의 예외 객체 생성

 2) try 블록을 빠져나가 첫 번째 catch 블록을 확인한다.

  - 객체의 타입과 참조변수 ae의 타입이 일치하기 때문에 ae에 객체의 주소가 담긴다.

  - 이때 ae의 유효 범위는 해당 catch 블록 내부

 3) 해당 catch 블록을 실행하면 아래와 같은 결과가 나온다.

// 결과화면
1
2
java.lang.ArithmeticException: / by zero
	at Test.main(Test.java:6)
예외메시지 : / by zero
6

 a. 맨 위부터 실행

 b. 6번째 줄에서 산술 예외 발생

  - 예외가 발생한 곳에서 try 블록을 빠져나오기 때문에 4는 출력되지 않는다.

 c. 첫 번째 catch 블록 수행

  - printStackTrace() 실행 -> 에러 메시지 2줄 출력

  - getMessage() 실행 -> 어떤 예외였는지 메시지로 알려줌

 d. try-catch문을 완전히 빠져나온 후 6 출력

'Java' 카테고리의 다른 글

예외 발생시키기  (0) 2022.05.25
멀티 catch 블록  (0) 2022.05.24
프로그램 오류의 종류와 예외 처리  (0) 2022.05.19
익명 클래스  (0) 2022.05.19
내부 클래스  (0) 2022.05.19