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
반응형