예외가 발생하면 예외 객체가 만들어진다. 객체의 타입은 발생하는 예외에 따라서 정해진다. 그 객체에 예외에 대한 정보가 들어있고 메서드들을 가지고 있다. 예외가 일치하는 catch 블럭 내에서 참조변수를 통해 발생한 예외 객체를 사용할 수 있다.
try {
} catch (Exception1 a) {
a.printStackTrace();
} catch (Exception2 a2) {
a.printStackTrace();
}
위의 코드와 같이 동일한 내용을 가진 catch 블럭이 있다면
try {
} catch ( Exception1 | Exception2 a) {
a.printStackTrace();
}
이런식으로 처리하기.
try {
} catch (Exception1 | Exception2 a) {
a.method()1; // 예외가 발생한다. Exception1에만 선언된 메서드를 호출할 수 없다.
if ( a instanceof Exception1){
Exception1 a1 = (Exception1)a;
a1.method1(); // 이렇게 if 문을 이용해 instanceof로 체크하고 형변환을 한다면 Exception1에만 있는 메서드를 호출할 수 있다.
}