[Java] 사용자 정의 Exception

Hee·2024년 4월 2일

Java 복습

목록 보기
34/46
post-thumbnail

checkedException과 unCheckedException

checkedException

  • Exception 클래스를 상속받아 정의한다.
  • 반드시 오류를 처리해야만 한다.
  • 예외처리 하지 않으면 컴파일 오류를 발생시킨다.

unCheckedException

  • RuntimeException 클래스를 상속받아 정의한다.
  • 예외처리하지 않아도 컴파일 시에 오류를 발생시키지 않는다.


사용자 정의 Exception

클래스 이름만으로 어떤 오류가 발생했는지 알려주어 코드의 직관성을 높인다.

// Exception을 상속받은 새로운 Exception 클래스 정의
// RuntimeException을 상속받은 BizException

public class BizException extends RuntimeException{
	public BizException(String msg){   // 생성자 정의
    	super(msg);					// 부모의 생성자에게 msg 넘김
	}
    public BizException(Exception ex){   // 생성자 정의 
    	super(ex);					// 부모의 생성자에게 exception 넘김
    }
}
  • super(msg)는 RuntimeException 클래스의 생성자에게 예외 메시지를 전달하는 역할을 한다.
  • RuntimeException 클래스는 문자열을 받는 생성자를 정의하고 있어서, 이 생성자는 예외가 발생한 이유에 대한 설명을 포함할 수 있도록 문자열 메시지를 받는다.

BizService 클래스는 업무를 처리하는 메소드를 가지고 있다고 가정

public class BizService{
	public void bizMethod(int i) throws BizException{
    	System.out.println("비지니스 로직 시작");
        if(i < 0){
        	throw new BizException("매개변수 i는 0이상이어야 함");
        }
        System.out.println("비지니스 로직 종료");
    }
}

앞에서 만든 BizService를 이용하는 BizExam 클래스

  • 매개변수 값을 -1을 넘길 때는 Exception이 발생하기 때문에 try catch 블록으로 처리한다.
public class BizExam{
	public static void main(String[] args){
    	BizService biz = new BizService();
        biz.bizMethod(5);
        try{
        	biz.bizMethod(-3);
        }catch(Exception ex){
        	ex.printStackTrace();
        }
    }
}

실행결과
비지니스 로직 시작
비지니스 로직 종료
비지니스 로직 시작
javaStudy.BizException: 매개변수 i는 0이상이어야 함
at javaStudy.BizService.bizMethod(BizService.java:7)
at javaStudy.BizExam.main(BizExam.java:9)

0개의 댓글