사용자 정의 예외 만들기
- 우리가 직접 예외 클래스를 정의할 수 있다. (상속을 통해서~)
- 조상은
Exception
과 RuntimeException
중에서 선택한다.
Exception
: 사용자가 발생시키는 예외 (필수 처리 예외)
RuntimeException
: 프로그래머가 (실수로) 발생시키는 예외 (선택적 처리 예외)
class MyException extends Exception {
private final int ERR_CODE;
MyException(String msg, int errCode) {
super(msg);
ERR_CODE = errCode;
}
MyException(String msg){
this(msg, 100);
}
}
예외 되던지기 (exception re-throwing)
- 예외를 처리한 후에 다시 예외를 발생시키는 것
- 호출한 메서드와 호출된 메서드 양쪽 모두에서 예외처리하는 것
public class Ex8_12 {
public static void main(String[] args) {
try {
method1();
} catch (Exception e){
System.out.println("main 메서드에서 예외가 처리되었습니다.");
}
}
static void method1() throws Exception {
try {
throw new Exception();
} catch (Exception e) {
System.out.println("method1 메서드에서 예외가 처리되었습니다.");
throw e;
}
}
}
>>>
method1 메서드에서 예외가 처리되었습니다.
main 메서드에서 예외가 처리되었습니다.
언제 되돌리기를 할까?
- 한 번에 예외처리를 진행하는 것이 아니라, 여러 곳에서 분담하여 예외처리를 진행해야 할 때 사용한다.