▸JAVA/기본 문법

예외(Exception) 처리하기_사용자 정의 예외 객체(throw) [5/5]

코데방 2019. 12. 13.
728x90

[ 사용자 정의 예외 객체 ]

  • 기본 라이브러리(API)에서 제공하는 예외 객체 외 개발자가 선언해서 사용하는 예외 객체
  • Exception클래스 또는 Exception의 자식 클래스를 반드시 상속받아야 함
  • 일반적으로 Exception에서 선언된 형태의 생성자 외에는 다른 멤버를 가지지 않음

즉 Exception을 상속받는 예외 객체를 직접 만들고, 조건문을 사용해서 특정 상황에서 예외를 강제로 발생하도록 만들어 줍니다. 사실 이 경우 조건문이기 때문에 굳이 예외 객체를 생성하지 않더라도 처리하고 싶은 예외 상황을 조건문으로 처리하거나, 예외 객체 대신 그냥 메소드로 생성해서 사용할 수도 있습니다. 다만 명시적인 예외 객체를 사용하므로써 코드의 가시성을 높일 수 있습니다.

 


 

아래는 일반 메소드로 예외 처리를 했을 경우입니다. 그냥 예외 상황에 대한 처리 구문을 메소드로 만들어 소환하면 됩니다.

package study.first;

public class Main {
	public static void main(String[] args) {

		int n = 101;		
		
		// 100보다 작은 경우 정상
		if (n < 100)
			System.out.println("정상");
		// 100보다 크면 예외 발생
		else
			MyException.numException("100보다 큽니다.");		
	}
}

class MyException {
	
	static void numException(String message) {
		
		System.out.println(message);
		
	}	
}

 


 

아래는 예외 객체를 생성해서 위와 같은 예외 상황을 처리한 예입니다. 강제로 예외를 발생시킬 때는 "throw"를 사용합니다. 이전글에서 예외를 호출한 쪽으로 던져주는 "throws"와 한글자가 다른 점에 유의해야 합니다. 사용자 정의 예외 객체의 사용은 각자의 설계와 스타일에 맞게 사용하면 될 것 같습니다. 

package study.first;

public class Main {
	public static void main(String[] args) {

		int n = 101;		
		
		// 100보다 작은 경우 정상
		if (n < 100)
			System.out.println("정상");
		// 100보다 크면 예외 발생
		else
			// 강제 예외 발생 (throw)
			try {
				
				throw new NumException();
				
			// 발생시킨 예외를 처리
			} catch(NumException e) {
				
				// 출력하고 싶은 메세지 선택
				e.numError();
			}		
	}
}
package study.first;

// 사용자 정의 예외 클래스 생성
public class NumException extends Exception {

	public NumException() {
		
		super();
	}
	
	 public void numError() {
		 
		 System.out.println("100보다 큽니다.");
	 }
}

 

728x90

댓글

💲 추천 글