Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 사용자 정의 예외(Custom Exception) 생성하는 방법

애플리케이션의 요구 사항에 따라 의미 있는 예외를 직접 만들어야 하는 경우가 있습니다. Java에서는 Exception 클래스를 상속하여 자신만의 예외를 생성할 수 있으며, 이렇게 개발자가 직접 정의한 예외를 사용자 정의 예외(User-defined Exception) 또는 커스텀 예외(Custom Exception)라고 부릅니다.

커스텀 예외 생성 단계와 예제

  • CustomException 클래스는 커스텀 예외 클래스로, Exception 클래스를 상속(extends)하여 정의합니다.
  • 예외 메시지를 객체 내부에 보관하기 위해 멤버 변수 message를 선언합니다.
  • 커스텀 예외 객체의 생성자에 문자열 인수를 전달하며, 생성자는 전달받은 문자열을 변수 message에 저장합니다.
  • toString() 메서드는 예외 메시지를 출력하는 데 사용됩니다.
  • main 메서드에서 try-catch 블록으로 CustomException을 던져(throw) 보고, 커스텀 예외를 생성할 때 문자열이 어떻게 전달되는지 확인합니다. catch 블록 안에서는 해당 메시지를 출력합니다.

예제 코드

class CustomException extends Exception {
    String message;
    CustomException(String str) {
        message = str;
    }
    public String toString() {
        return ("Custom Exception Occurred : " + message);
    }
}
public class MainException {
    public static void main(String args[]) {
        try {
            throw new CustomException("This is a custom message");
        } catch(CustomException e) {
            System.out.println(e);
        }
    }
}

실행 결과

Custom Exception Occurred : This is a custom message

알아두면 좋은 추가 팁

  • Exception을 상속하면 체크드 예외(checked exception)가 되어 컴파일 시점에 반드시 예외 처리를 해야 하며, RuntimeException을 상속하면 언체크드 예외(unchecked exception)가 됩니다.
  • 생성자에서 super(str)을 호출해 부모 클래스에 메시지를 전달하면, 이후 getMessage() 메서드로도 예외 메시지를 손쉽게 확인할 수 있습니다.
  • 직렬화 관련 경고를 방지하려면 serialVersionUID 필드를 함께 정의하는 것이 좋습니다.
  • 예외 이름은 발생 상황을 명확히 나타내도록 지으면(예: InvalidUserInputException) 코드 가독성과 유지보수성이 크게 향상됩니다.