Java/JAVA의 정석

printStackTrace() & getMessage(), 멀티 catch블럭

Jenny_yoon 2022. 11. 15. 18:59
728x90
반응형

 

예외가 발생하면 예외 객체가 생성된다.
그곳엔 예외 정보가 들어가 있고 아래 메서드들을 통해 그 정보를 가져올 수 있다.

 

1) 대표적인 메서드

  • printStackTrace() : 예외발생 당시의 호출스택(Call Stack)에 있었던 메서드의 정보와 예외 메세지를 화면에 출력한다.
    - 호출법 : 참조변수.printStackTrace();
  • getMessage() : 발생한 예외클래스의 인스턴스에 저장된 메세지를 얻을 수 있다.

ex.예시

public class Ex8_5 {
	public static void main(String[] args) {
		System.out.println(1);
		System.out.println(2);
		
		try {
			System.out.println(3);
			System.out.println(0/0);
			System.out.println(4);
		} catch (ArithmeticException ae) {
			ae.printStackTrace();
			System.out.println("예외 메세지 : " + ae.getMessage());
	} //try-catch 끝

	System.out.println(6);
  } //main 메서드 끝
}
더보기

실행결과 :

1

2

3

java.lang.ArithmeticException: / by zero

at pkg1.Ex8_5.main(Ex8_5.java:12)

예외 메세지 : / by zero

6

2) 멀티 catch블럭

: 내용이 같은 catch블럭을 하나로 합친 것(JDK1.7부터)

  • 특징 
    - 코드의 중복 제거
    - 2개의 예외가 부모 자식 관계라면 사용 불가 (에러!) -> 그냥 부모타입의 catch블럭만 써줘도 자식의 예외도 모두 잡아냄!
    - 참조변수 사용시, 2개 예외 객체가 갖고있는 공통된 부분에만 사용 가능
    ㄴ 참조변수 e가 ExceptionA에 있는지, ExceptionB에 있는지 알수 없음. 즉, e.methodA(); 와 같이 특정 예외객체와 사용 불가능
    ㄴ 굳이 멀티 catch블럭으로 예외객체 2개를 사용 하고 싶다면, 아래 if문으로 사용사능

 

  • 사용법

 

 

 

 

 

 

👇 아래와 같이 변경

728x90
반응형