본문 바로가기

JAVA/복습

사용자 정의 Exception

사용자 정의 Exception

Exception 클래스가 이미 자바에서 정의해놓은 클래스들이 사용될 수 도 있고

사용자가 직접 Exception을 정의해서 사용할 수 도 있다.

사용자는 Exception이나 RuntimeException이라는 클래스를 상속받아 새로운 Exception클래스를 만들어 낼 수 있다.

 

public class 클래스이름 extends Exception{

			...
}

 

새로운 Exception클래스를 만드는 이유는 무엇일까?

 

Exception클래스 자체가 특별한 무언가를 하지는 않는다.

다만 이름 때문이다.

 

클래스 이름만으로도 어떤 오류가 발생했구나라는 것을 직관적으로 사용자에게 알게하려는 목적을 가지고 있다.

 

 

1. Exceptiond을 상속받은 클래스들은 Checked Exception이라 한다.

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

2.  Exceptiond을 상속받은 클래스들은 Checked Exception이라 한다.

  • RuntimeException 클래스를 상속 받아 정의한 unChecked Exception
    •  예외 처리하지 않아도 컴파일 시에는 오류를 발생시키지 않는다.
    • 모든 예외 상황에 대해서는 적절하게 처리해주는 것이 프로그램에 수행될 때 안정적으로 수행될 수 있게 도와줄 수 있다. 

 


-- BizException.java (사용자 정의 Exception)

package Java02;

public class BizException extends RuntimeException {

    // Exception 객체에서는 생성자만 지정해주면 된다.

    // 1. 어떤 오류가 발생했는지 String값으로 메세지를 가지고 들여오는 생성자
    // (문자열로 된 오류 메세지)
    public BizException(String msg) {
        super(msg);
    }

    // 2. Exception을 받아들여서 해당 Exception을 부모의 생성자에게 넘겨줄 수 있는 생성자
    // (실제 발생할 Exception을 담는 목적의 생성자)
    public BizException(Exception ex) {
        super(ex);
    }
}

 

--BizService.java

package Java02;

public class BizService {

    // 비즈니스를 수행하는 Biz메소드를 정의
    // BizMethod는 int값을 받아들이고 exception이 발생했을 때 BizException을 throw 해주는
    public void bizMethod(int i) throws BizException {
        System.out.println("비즈니스 메소드 시작");

        //i가 0 보다 작을때
        if(i < 0)
            throw new BizException("매개변수 i는 0이상이어야 합니다.");

        System.out.println("비즈니스 메소드 종료");
    }
}

 

-- 사용해보기

package Java02;

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

        BizService biz = new BizService();
        biz.bizMethod(5);
        biz.bizMethod(-3);

    }

}

--try{} 추가

package Java02;

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

        BizService biz = new BizService();
        biz.bizMethod(5);

        try {
            biz.bizMethod(-3);

        } catch (BizException e) {
            e.printStackTrace();
        }

    }

}

--실행결과

'JAVA > 복습' 카테고리의 다른 글

java.lang 패키지/ 오토박싱  (0) 2021.10.20
Object와 overriding  (0) 2021.10.17
Exception 발생시키기  (0) 2021.10.16
throws  (0) 2021.10.16
Exception - 예외  (0) 2021.10.13