본문 바로가기
STUDY/JAVA

예외처리 - 나만의 예외처리 만들기

by NOTEEE 2018. 1. 22.

커스텀 예외처리 정의?

 - 표준 예외클래스가 아닌 예외클래스를 만들어보자.

 - checked / unchecked 어느 예외를 사용할 것인지 정해야한다.


checked / unchecked를 정하는 기준?

 - API쪽에서 예외를 던졌을 때 API 사용자 쪽에서 예외상황을 복구할 수 있다면 checked 예외를 사용한다.

 - 사용자가 API의 사용방법을 어겨서 발생하는 문제거나 예외상황이 이미 발생한 시점에서 그냥 프로그램을 종료하는 것이 덜 위험할 때 unchecked를 사용한다.



unchecked 예외 소스

package org.opentutorials.javatutorials.exception;
class DivideException extends RuntimeException {
    DivideException(){
        super();
    }
    DivideException(String message){
        super(message);
    }
}
class Calculator{
    int left, right;
    public void setOprands(int left, int right){        
        this.left = left;
        this.right = right;
    }
    public void divide(){
        if(this.right == 0){
            throw new DivideException("0으로 나누는 것은 허용되지 않습니다.");
        }
        System.out.print(this.left/this.right);
    }
}
public class CalculatorDemo {
    public static void main(String[] args) {
        Calculator c1 = new Calculator();
        c1.setOprands(100);
        c1.divide();
    }
}
cs

- checked 예외 : 반드시 예외처리를 해야하는 예외.

 - unchecked 예외 : 예외처리를 해도 되고 안해도 되는 예외.



출처: http://gurumnote.com/107 [NOTE]

출처: http://gurumnote.com/107 [NOTE]




checked 예외 소스

class DivideException extends Exception {
    DivideException(){
        super();
    }
    DivideException(String message){
        super(message);
    }
}
class Calculator{
    int left, right;
    public void setOprands(int left, int right){        
        this.left = left;
        this.right = right;
    }
    // 상위클래스로 예외를 전가시킴.
    public void divide() throws DivideException{
        if(this.right == 0){
            throw new DivideException("0으로 나누는 것은 허용되지 않습니다.");
        }
        System.out.print(this.left/this.right);
    }
}
public class CalculatorDemo {
    public static void main(String[] args) {
        Calculator c1 = new Calculator();
        c1.setOprands(100);
        // 상위클래스인 여기서 예외처리.
        try {
            c1.divide();
        } catch (DivideException e) {
            e.printStackTrace();
        }
    }
}
cs


unchecked 와 checked의 설명은 아래 링크 클릭

2017/10/20 - [STUDY/JAVA] - 예외처리4



'STUDY > JAVA' 카테고리의 다른 글

InnerClass(내부클래스)  (0) 2018.01.22
Object클래스  (0) 2018.01.22
예외처리4  (0) 2018.01.22
예외처리3 예제  (0) 2018.01.22
예외처리2  (0) 2018.01.22