충분히 쌓여가는
사용자 정의 예외 만들기, 예외 되던지기 본문
사용자 정의 예외 만들기
우리가 직접 예외 클래스를 정의할 수 있다
상속을 통해 만든다
1. 조상은 Exception과 RuntimeException 중에서 선택
2. String 매개변수가 있는 생성자를 넣어준다
Exception: 사용자가 발생시키는 예외, 필수처리(try-catch 필수)
RuntimeException: 프로그래머의 실수로 발생시키는 예외, 선택처리(try-catch 선택)
class MyException extends Exception {
MyException(String msg) { // 문자열을 매개변수를 받는 생성자
super(msg); // 조상인 Exception 클래스의 생성자를 호출한다, Exception(String msg) 호출
}
}
코드
Exception을 상속받았기 때문에 필수 처리예외(try-catch 필수 작성)임을 알 수 있다
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); // ERR_CODE를 100(기본값)으로 초기화한다
}
public int getErrCode() { // 에러 코드를 얻을 수 있는 메서드도 추가했다
return ERR_CODE; // 이 메서드는 주로 getMessage()와 함께 사용될 것이다
}
}
예외 되던지기(exception re-throwing)
예외를 처리한 후에 다시 예외를 발생시키는 것
호출된 메서드와 호출된 메서드 양쪽(main, method1) 모두에서 예외처리하는 것
class ExceptionReThrowing {
public static void main(String[] args) {
try {
method1();
} catch (Exception E) {
System.out.println("main메서드에서 예외가 처리되었습니다");
}
} // main 메서드 끝
static void method1() throws Exception {
try {
throw new Exception();
} catch (Exception e) {
System.out.println("method1 메서드에서 예외가 처리되었습니다");
throw e; // 다시 예외를 발생시킨다
}
} // method1 메서드 끝
}
method1 메서드에서 예외가 처리되었습니다
main메서드에서 예외가 처리되었습니다
'Java > JAVA2' 카테고리의 다른 글
hashCode() (0) | 2023.06.25 |
---|---|
연결된 예외(chained exception) (0) | 2023.06.25 |
checked 예외, unchecked 예외 (0) | 2023.06.22 |
예외 발생시키기 (0) | 2023.06.22 |
멀티 catch 블럭 (0) | 2023.06.22 |