JUST WRITE

Checked and Unchecked Exceptions 본문

Programing/Java

Checked and Unchecked Exceptions

천재보단범재 2022. 2. 4. 23:12
이 글은 Baeldung 사이트 'Checked and Unchecked Exceptions'를 해석, 정리한 글입니다.

 

Exception은 크게 Checked Exception과 Unchecked Exception으로 나누어 진다.

Checked Exception

Checked Exception은 일반적으로 Program 통제 밖에 있는 Error를 나타낸다.

Java는 Compile 시점에 Checked Exception을 확인한다.

Java에서 Checked Exception은 IOException, SQLException, ParseException 등이 있다.

throws 키워드를 써서 Checked Exception을 선언해야 한다.

private static void checkedExceptionWithThrows() throws FileNotFoundException {
    File file = new File("not_existing_file.txt");
    FileInputStream stream = new FileInputStream(file);
}

아니면 try-catch Block으로 Checked Exception을 처리할 수 있다.

private static void checkedExceptionWithTryCatch() {
    File file = new File("not_existing_file.txt");
    try {
        FileInputStream stream = new FileInputStream(file);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
}

Unchecked Exception

Program에서 Unchecked Exception이 발생한다면 내부 Logic에서 Error가 발생했다는 것을 알 수 있다.

Java는 Compile 시점에 Unchecked Exception을 확인하지 않는다.

Method에 throws 키워드를 써서 Unchecked Exception을 선언하지 않아도 된다.

Java에서 Unchecked Exception은 NullPointerException, IllegalArgumentException 등이 있다.

RuntimeException모든 Unchecked Exception의 Super Class이다.

Unchecked Exception을 Custom으로 만들 때 RuntimeException을 상속해서 만든다.

public class NullOrEmptyException extends RuntimeException {
    public NullOrEmptyException(String errorMessage) {
        super(errorMessage);
    }
}

Java Documentation에서 Checked Exception, Unchecked Exception을 언제 사용할지 가이드를 제시한다.

If a client can reasonably be expected to recover from an exception, make it a checked exception. If a client cannot do anything to recover from the exception, make it an unchecked exception.
  Checked Exception Unchecked Exception
확인 시점 Compile 시점 Runtime 시점
처리 여부 반드시 예외 처리 명시적으로 하지 않아도 된다.
Transaction 처리 예외 발생 시 rollback 하지 않음. 예외 발생 시 rollback 해야 함.
종류 IOException, ClassNotFoundException 등 NullPointerException, ClassCaseException 등

 

728x90
반응형

'Programing > Java' 카테고리의 다른 글

Utility Class  (0) 2021.12.31
JRE  (0) 2021.11.28
JVM  (0) 2021.11.27
Serialization  (0) 2021.11.20
Optional  (0) 2021.10.31
Comments