Java 커스텀 예외 만들기: 단계별 가이드
Java에서 커스텀 예외란?
커스텀 예외는 java.lang.Exception(또는 언체크 시나리오용 RuntimeException)을 확장하는 사용자 정의 클래스입니다. 고유한 예외 타입을 만들면 도메인별 오류 조건을 표현하고, 에러 처리를 명확히 하며, 호출자에게 더 풍부한 컨텍스트를 제공할 수 있습니다.

실제로는 Exception의 모든 메서드를 오버라이드할 필요는 드뭅니다. 가장 일반적인 커스터마이징은 에러 코드, 메시지, 근본 원인을 받는 생성자를 추가하는 것입니다. 필수 단계를 보여주는 간결한 예제입니다.
예제: 커스텀 예외 정의 및 던지기
1단계 – 예외 클래스 생성
public class MyException extends Exception {
private final int errorCode;
public MyException(int errorCode) {
super("Error code: " + errorCode);
this.errorCode = errorCode;
}
@Override
public String toString() {
return "MyException{errorCode=" + errorCode + "}";
}
}
2단계 – 클라이언트 코드에서 예외 사용
public class JavaExceptionDemo {
public static void main(String[] args) {
try {
// 실패 조건 시뮬레이션
throw new MyException(2);
} catch (MyException e) {
System.out.println(e);
}
}
}
프로그램 실행 시 다음 출력이 나옵니다:

위 예제에서 throw 키워드는 MyException 인스턴스를 생성하여 가장 가까운 일치하는 catch 블록에 즉시 넘깁니다. 오버라이드된 toString() 메서드는 출력 메시지가 정보적이게 만듭니다.
핵심 요약
Exception(또는 RuntimeException)을 확장해 커스텀 타입 생성
- 슈퍼클래스에 의미 있는 메시지를 전달하는 생성자 제공
- 디버깅 출력을 명확히 위해
toString() 또는 getMessage() 오버라이드
throw로 예외 발생; 처리하거나 더 전파할 수 있는 곳에서 catch
이 관행을 따르면 도메인별 오류 조건을 우아하게 처리하는 더 유지보수하기 쉽고 자기 문서화되는 Java 코드를 작성할 수 있습니다.