/ JAVAJUNGSUK

Ch8-7~8. 멀티 catch블럭

자바의 정석 기초편

0. 목차



Chapter8. 예외처리

Ch8 - 7. printStackTrace()와 getMessage()

Ch8 - 8. 멀티 catch블럭



Ch8 - 7. printStackTrace()와 getMessage()



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);   // 실행X
		} catch (ArithmeticException ae)	{
			ae.printStackTrace();
			System.out.println("예외메시지 : " + ae.getMessage());
		}	// try-catch의 끝

		System.out.println(6);
	}	// main메서드의 끝
}

// console
1
2
3
java.lang.ArithmeticException: / by zero
	at Ex8_5.main(Ex8_5.java:8)
예외메시지 : / by zero
6

▶ printStackTrace() 메서드란?

▷ 예외 발생 시, 호출 스택에 있는 메서드의 정보와 예외 메세지를 화면에 출력
java.lang.ArithmeticException: / by zero
	at Ex8_5.main(Ex8_5.java:8)


▶ getMessage() 메서드란?

▷ 발생한 예외 클래스의 인스턴스에 저장된 메세지를 get
by zero



Ch8 - 8. 멀티 catch블럭


▶ 멀티 catch블럭이란?

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


▶ 주의

▷ 부모 자식 관계는 멀티 catch블럭 사용 → 에러
  • 부모-자식 멀티 catch블럭 = ERROR
      class ExceptionA extends ExceptionB e { }
        
      try { 
          ...
      } catch (ExceptionA | ExceptionB e) { // ERROR!
          e.printStackTrace();
      }
    
  • 부모만 catch블럭 = OK
      class ExceptionA extends ExceptionB e { }
        
      try { 
          ...
      } catch (ExceptionA e) { // OK
          e.printStackTrace();
      }
    
▷ 멀티 catch블럭에서 공통 멤버만 사용가능