[Java] (5) 예외처리 (exception) - 사용자 정의 예외 던지기


예외처리 : 사용자 정의 예외 던지기

 - 예외 상황이 발생했을 때 예외 객체를 만들어 던진다.

 - 예외 객체를 만들기 위해 예외 클래스를 선택해야 하는데,

   그 선택의 기준은 클래스의 이름이다.

   즉 예외 상황을 잘 표현할 수 있는 이름을 가진 클래스를 선택한다.


 - 그런데 예외 상황에 딱 맞는 마땅한 예외 클래스가 없을 경우,

   또는 예외 상황을 좀 더 잘 표현하고 싶을 경우,

   개발자가 직접 예외 클래스를 만들어 던질 수 있다.

 - 이때 그 클래스는 애플리케이션 예외이어야 하기 때문에

   보통 java.lang.Exception을 상속 받아서 만든다.


 - Exception을 상속 받아 뭔가 특별한 기능을 추가한다기 보다,

   예외 상황을 잘 드러내는 이름을 가진 클래스를 만든다는 의미로

   서브 클래스를 작성해야 한다.


- 보통 상속은 기존 클래스의 기능을 확장하는 것에 있지만,

  예외클래스들의 상속은 기능을 더 보태는 개념이 아니다.

  예외 클래스의 상속은 '기능 추가'가 목적이 아니라, 각 예외를 이름 별로

  구분하는 것이 목적이다. 이름


 

사용자 정의 예외 클래스를 만드는 이유 : 

 1) 기능을 확장하기 위한 것이 아니다.

 2) 예외 상황이 발생했을 때, 클래스 이름으로 즉기 그 예외 상황을 파악하려는 것이다.

 3) 그래서 예외 클래스의 상속 관계는 이름으로 예외를 분류하는 데 의미를 두고 있다.

 

 


사용자 정의 예외 클래스의 예제


public class Test07 {

  static class InvalidValueScopeException extends IllegalArgumentException {
    public InvalidValueScopeException() {
      super();
      // TODO Auto-generated constructor stub
    }
    public InvalidValueScopeException(String message, Throwable cause) {
      super(message, cause);
      // TODO Auto-generated constructor stub
    }
    public InvalidValueScopeException(String s) {
      super(s);
      // TODO Auto-generated constructor stub
    }
    public InvalidValueScopeException(Throwable cause) {
      super(cause);
      // TODO Auto-generated constructor stub
    }
   
  }
  public static void main(String[] args) {
    try  { // try 블록 안에 예외를 던질 수 있는 코드를 넣고
      if (args.length < 1)
        throw new IllegalArgumentException("애플리케이션 아규먼트가 없습니다.");
      int age = Integer.parseInt(args[0]);
     
      if (age < 1)
        throw new InvalidValueScopeException("나이가 유효하지 않습니다.");
     
      System.out.println(age);
    } catch (Throwable ex) {
      ex.printStackTrace();
    }
  }
 }


- 실행 결과 :



블로그 이미지

필로그래머

,