public class 클래스명 extends Exception { }
클래스의 이름만으로 어떤 오류를 발생시켰는지 알려주어 코드 직관성 높임.
checked Exception
: Exception 클래스를 상속 받아 정의함
unChecked Exception
: RuntimeException 클래스를 상속 받아 정의함
public class BizException extends RuntimeException {
//Exception 객체에서는 생성자만 지정해주면 된다.
public BizException(String msg){ //메시지를 가지고들여오는 생성자
super(msg); //부모에게 보내줌
}
public BizException(Exception ex){ //실제 발생할 인셉션을 담은 생성자
super(ex); //부모에게 보내줌
}
}
public class BizService {
public void bizMethod(int i)throws BizException{
System.out.println("비지니스 로직이 시작합니다.");
if(i < 0){
throw new BizException("매개변수 i는 0이상이어야 합니다.");
}
System.out.println("비지니스 로직이 종료됩니다.");
}
}
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(); //Exception이 발생한 이유와 위치가 어딘지 전체적인 단계를 다 출력.
}
}
}
실행 결과
비지니스 로직이 시작합니다.
비지니스 로직이 종료됩니다.
비지니스 로직이 시작합니다.
javaStudy.BizException: 매개변수 i는 0이상이어야 합니다.
at javaStudy.BizService.bizMethod(BizService.java:7)
at javaStudy.BizExam.main(BizExam.java:9)