- printStackTrace() : 예외발생 당시의 호출스택(Call Stack)에 있었던 메소드의 정보와 예외 메시지를 화면에 출력한다.
- getMessage() : 발생한 예외클래스의 인스턴스에 저장된 메시지를 얻을 수 있다.
→ 이 외의 메소드도 있지만 , 두개의 메소드가 가장 많이 쓰임.
예외 발생 → 예외 객체 생성(예외 정보, 메소드 가짐)
catch문 속 예외처리 참조변수는 그 catch블럭 내에서 사용 가능.
사용예시
catch (ArithmeticException ae) { // 참조변수 ae는 해당 catch블럭내에서만 사용 가능(유효범위)
ae.printStackTrace(); // 호출stack에 예외가 발생한 상황의 정보를 알려줌
// 결과: java.lang.ArithmeticException : / by zero at Ex8_5.main(Ex8_5.java:8)
System.out.println("예외메시지 : " + ae.getMessage()); // String 문으로 출력됨 (ex, / by zero)
}
멀티 catch 블럭
: 내용이 같은 catch블럭을 하나로 합친 것(JDK 1.7~)
1) 부모, 자식 관계는 안됨!! 조상타입으로 catch블럭을 선언해놓으면, 자식도 가능.
2) Exception A & B의 참조변수(e)는 공통멤버만 사용(호출)가능
3) 한쪽에만 있는 메소드를 굳이 사용하고 싶다면, instanceof로 체크후, 형변환 해서 사용해야함.
↳ 비효율적인 방법. 따로따로 하는게 나음
출처
- 자바의 정석 기초편 - youtube : ch 8- 7,8