java

예외처리 추가설명

appmaster 2019. 7. 11. 14:17

유연한 프로그래밍을 위한 예외처리의 기법에 대해서 살펴보자. 다음은 예외처리를 위한 try, catch문의 기본 구조이다.

 

try/catch

try {
    ...
} catch(예외1) {
    ...
} catch(예외2) {
    ...
...
}

try문안에 문장들에 예외가 발생하지 않다면 catch문 다음의 문장들은 수행이 되지 않는다. 하지만 try문안의 문장ㄷ릉르 수행 중 해당예외가 발생하면 예외에 해당하는 catch문이 수행된다.

 

 

Finally

프로그램 수행 도중 예외가 발생하면 프로그램이 중지되거나 예외처리를 했을 경우 catch구문이 실행된다. 하지만 어떤 예외가 발생하더라도 반드시 실행되어야 하는 부분이 있어야 한다면 어떻게 하나??

 

public class Test {
    public void shouldBeRun() {
        System.out.println("ok thanks.");
    }

    public static void main(String[] args) {
        Test test = new Test();
        int c;
        try {
            c = 4 / 0;
        } catch (ArithmeticException e) {
            c = -1;
        } finally {
            test.shouldBeRun();
        }
    }
}

finally 구문은 try문장 수행 중 예외발생 여부에 상관없이 무조건 실행된다. 따라서 위 코드를 실행하면 test.shouldBeRun() 메소드가 수행되어 "ok, thanks"라는 문장이 출력될 것이다.

 

 

상속받은 클래스는 RuntimeException이다. Exception은 크게 두가지로 구분된다.

 

1. RuntimeException

2. Exception

 

RuntimeException은 실행 시 발생하는 예외이고 Exception은 컴파일 시 발생하는 에외이다. 즉, Exception은 프로그램 작성 시 이미 예측가능한 예외를 작성할 때 사용하고 RuntimeException은 발생 할수도 발생 안 할수도 있는 경우에 작성한다.

다른 말로 Exception을 Checked Exception, RuntimeException을 Unchecked Exception이라고도 한다.

'java' 카테고리의 다른 글

예외 처리(throw, throws)  (0) 2019.07.11
쓰레드(Thread)  (0) 2019.07.11
예외 처리 (try/catch)  (0) 2019.04.30
오버로딩 정리해주세요  (0) 2019.04.23
Wrapper 클래스  (0) 2019.04.22