본문

[2017.08.21] 13. 예외처리(Exception) 심화

예외처리에는 반드시 예외처리를 해야하는 필수 예외처리(Checked)와 선택적으로 예외처리가 가능한 선택 예외처리(Unchecked)가 있다.


대표적인 필수 예외처리는 IOException이고, 대표적인 선택 예외처리는 ArithmeticException 이다.

자바 코드에서 차이점을 확인해보자.


그렇다면 이러한 차이점이 생기는 원인은 무엇인지 API를 확인해보자.

(API 확인하는 방법 - http://heepie.tistory.com/11)

차이점은 RuntimeException의 상속여부이다.

RuntimeException을 상속하지 않은 클래스는 Checked Exception이라 하고 RuntimeException을 상속한 클래스 Unchecked Exception이라 한다. 



※ Checked Exception은 반드시 try/catch or throws로 예외처리해야 한다. 처리하지 않으면 컴파일 조차 되지 않는다. (컴파일과 런타임이란? - http://heepie.tistory.com/29)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Exception {
    void arithmeticException() {
        throw new ArithmeticException();    
    }
    
    // throws를 이용한 오류 해결 
    void ioException1() throws IOException {
        throw new IOException();    
    }
    
    // try/catch를 이용한 오류 해결 
    void ioException2() {
        try {
            throw new IOException();
        } catch (IOException e) {
            e.printStackTrace();
        }    
    }
}
cs

다음과 같이 try/catch or throws로 오류를 해결할 수 있다.



나만의 예외 만들기

※ 생성 할 예외가 checked/unchecked을 선택해야하고 그에 따라 어떤 Exception을 상속해야하는 결정해야 한다.

※ ArithmeticException과 같이 공식적인 예외의 경우는 'throw new ArithmeticException' 문구로 처리하지 않아도 컴파일러가 자동으로 처리하지만, 사용자 정의 예외 클래스의 경우는 정의한 예외 상황에 'throw new' 문구로 처리해줘야 한다.



# 예외처리 #checked #unchecked

공유

댓글