본문 바로가기
카테고리 없음

CheckedException 과 UncheckedException의 차이점

by 개발초보입니다 2023. 12. 18.

Exception

예외(Exception)는 프로그램 실행 중에 발생하는 예기치 않은 이벤트나 오류를 나타내는 프로그래밍 용어 입니다.

예외는 프로그램이 정상정으로 실행되지 못하게 하는 상황에서 발생하며, 이를 처리하기 위해 예외 처리(Exception handling) 메커니즘이 사용됩니다.

 

프로그램이 실행 중에 예외가 발생하면, 프로그램은 현재 실행 중인 부분을 중단하고 해당 예외를 처리할 수 있는 부분으로 제어를 전달합니다. 이를 통해 프로그램은 런타임 오유로부터 복구하거나 오류를 적절히 다룰 수 있게 됩니다.


CheckedException과 UncheckedException

Java와 몇몇 프로그래밍 언어에서는 예외(Exception)를 두가지 주요 유형으로 구분합니다.

  1. CheckedException(확인된 예외)
  2. UncheckedException(확인되지 않은 예외)

Checked Exception (확인된 예외)

  1. 예외 처리 강제성: CheckedException은 반드시 코드에서 예외를 처리하거나 예외를 던지는 메서드 시그니처에 throws절을 사용하여 해당 예외를 던짐으로써 예외를 처리할 것을 명시해야 합니다. 따라서 프로그래머는 이러한 예외에 대한 명시적인 처리를 강제 받게 됩니다.
  2. 컴파일러 체크: CheckedException은 컴파일 시간에 확인되며, 이로 인해 프로그래머는 컴파일 시에 예외 처리를 실수로 놓치는 것을 방지할 수 있습니다.
  3. IOException, SQLException 등: 대표적인 CheckedException에는 입출령 예외(IOException)이나 데이터베이스 작업 중 발생할 수 있는 SQL 예외(SQLException) 등이 있습니다.

예시 코드

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class CheckedExceptionExample {
    public static void main(String[] args) throws FileNotFoundException {
        File file = new File("example.txt");
        Scanner scanner = new Scanner(file); // FileNotFoundException 처리 필요
    }
}

Unchecked Exception (확인되지 않은 예외)

  1. 예외 처리 선택성: UncheckedException은 예외를 처리하지 않아도 컴파일이 가능하며, 프로그래머가 선택적으로 예외를 처리할 수 있습니다.
  2. 런타임 체크: UncheckedException은 런타임에 발생하며, 이로 인해 컴파일러에서는 확인되지 않습니다. 따라서 컴파일 시에 예외 처리에 대한 강제성이 없습니다.
  3. NullPointerException, ArrayIndexOutOfBoundsException 등: 대표적인 UncheckedException에는 널 포인트 참조(NullPointerException)나 배열 인덱스 초과(ArrayIndexOutOfBoundsException)등이 있습니다.

예시 코드

public class UncheckedExceptionExample {
    public static void main(String[] args) {
        String str = null;
        System.out.println(str.length()); // NullPointerException 처리 선택적
    }
}

차이점

  • CheckedException은 명시적인 예외 처리를 요구하며, UncheckedException은 예외 처리를 선택적으로 수행 할 수 있습니다.
  • CheckedException은 주로 프로그램이 외부 리소스와 상호 작용할 때 발생 하며, UncheckedException은 주로 프로그래머의 실수나 런타임 환경에서의 예외 상황을 나타냅니다.