반응형

사용자 정의 예외 만들기

  • 우리가 직접 예외 클래스를 정의할 수 있다.
  • 조상은 Exception과 RuntimeException중에서 선택한다.

 

사용자 정의 예외 만들기란, 우리가 직접 예외 클래스를 정의하는 것이다. 
만드는 방법은 상속을 통해서 만든다.
조상은, Exception클래스나 RuntimeException중에서 선택하면 된다.

Exception은 사용자가 발생시키는 예외이고, 필수 처리 예외라서, try-catch를 꼭 사용해야 한다.

RuntimeException은 프로그래머가 실수로 발생시키는 예외이고, 선택처리가 가능하다.

그래서, 가능하면, 선택처리가 가능한 RuntimeException을 조상으로 하면 되고, 
꼭 필요한 경우에만  Exception을 조상으로 만들면 된다.

 

위 코드는, Exception을 조상으로 했다.
사용자 정의 예외 클래스에는,  예외 메시지를 매개변수로 받는 생성자를 만들어 줘야하고(필수는 아니지만 만들어주는것이 일반적임),
그 안에는 구현으로는 조상 생성자를 호출하도록 적어줘야 한다.
예제에서는 (조상인 Exceptio클래스의 생성자인String msg) 호출하는 것.

예외를 생성할 때는 예외 메세지를 대부분 적어주기 때문에,
필수는 아니지만 예외 메시지를 매개변수로 받는 생성자를 만들어주는것이 일반적이다.

 

 

좀더 구체적인 예시 코드를 보자.

MyException이라는 예외를 만들었고, 조상은 필수로 처리해야하는 Exception이다. 즉, try-catch블럭을 꼭 써줘야 한다. 

그리고, 필오하면, 에러코드를 위한 필드를 넣을 수도 있다(필수는 아님), 

 

사용자 정의 예외를 만들 때 중요한 것

1. Exception과 RuntimeException중에 어떤 것을 조상으로 할지 정하기.

2. String 매개변수가 있는 생성자를 작성해 주는 것.

 


 

예외 되던지기 (exception re-throwing)

  • 예외를 처리한 후에 다시 예외를 발생시키는 것
  • 호출한 메서드와 호출된 메서드 양쪽 모두에서 예외처리하는 것

 

예외 되던지기는 예외를 다시 던지는 것이다.
예외를 다시 던진다는 것은, 예외를 처리하고나서 다시 예욀르 발생시키는 것이다.

 

예제 코드를 보자.

trhow new Exception()에서 예외가 발생하는데, 
그것을 try-catch로 처리했다. 
그런데, 처리했는데, throw e;로 다시 던진다. 

즉, 예외를 처리한다음, 다시 발생시켰다.

그러면, 예외가 method1선언되어 있는데, 해당 예외를 try-catch로 처리한 후,
throw e;다시 예외를 발생시켜서 method1을 호출한 main메서드의 try문으로 던진다.

그러면, main메서드의 try문에서 받은 예외를 다시 catch블럭으로 처리한다.

즉, 예외 처리를 2번한다. 이것을 예외 되던지기 라고 한다.

 

보통은, 둘중에 한군데에서 1번만 처리하는데,
여기에서는 특이하게 양쪽에서 처리한다.

예외를 분담처리해야 할 때, 예외 되던지기를 사용한다.

 

 

다시 정리해보면, 예외 처리하는 방법은 3가지가 있다.

1. 호출받은 쪽에서 try-catch로 예외 처리

2. 호출한 쪽에서 try-catch로 예외처리

3. 양쪽에서 try-catch로 예외처리

반응형

'JAVA' 카테고리의 다른 글

Object클래스와 equals()  (0) 2022.04.13
연결된 예외  (0) 2022.04.12
예외 선언하기, finally블럭  (0) 2022.04.11
예외 발생시키기, checked, unchecked 예외  (0) 2022.04.11
printStackTrace(), 멀티 catch블럭  (0) 2022.04.11