프로그래밍언어

[JAVA] Checked Exception에 대하여

애기공룡훈련병 2025. 2. 17. 11:07
반응형

Checked Exception

Checked Exception(검사 예외)은 컴파일 시점에서 반드시 처리해야 하는 예외를 말합니다. 즉, 예외 처리를 하지 않으면 컴파일 오류가 발생하여 프로그램이 실행되지 않습니다.

Checked Exception의 특징

컴파일러가 예외 처리 여부를 검사

try-catch 또는 throws를 사용하여 처리하지 않으면 컴파일 오류가 발생합니다.

주로 외부 환경과 관련된 예외 발생

파일, 데이터베이스, 네트워크, I/O 작업 등에서 발생하는 예외가 대부분 Checked Exception입니다.

개발자가 직접 예외 처리해야 함

예외를 반드시 처리하도록 강제하여 안정적인 프로그램을 만들 수 있도록 돕습니다.

Checked Exception이 예외 처리를 강제하는 이유

Checked Exception이 예외 처리를 강제하지 않으면, 프로그램이 예상치 못한 오류로 인해 실행 중 갑자기 멈출 수 있기 때문입니다.

Java의 설계 철학은 안정적인 프로그램 실행을 보장하는 것입니다.

따라서 파일, 네트워크, 데이터베이스 등 외부 환경과 관련된 예외는 반드시 처리해야 한다는 원칙을 적용합니다.

Checked Exception 예제

ClassNotFoundException 예제

Class.forName("com.mysql.cj.jdbc.Driver")을 사용할 때,

해당 클래스가 존재하지 않으면 ClassNotFoundException이 발생합니다.

public class CheckedExceptionExample {
    public static void main(String[] args) {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver"); // 드라이버 로드
        } catch (ClassNotFoundException e) {
            System.out.println("드라이버를 찾을 수 없습니다.");
            e.printStackTrace();
        }
    }
}
  • 예외 처리(try-catch)를 하지 않으면 컴파일 오류 발생

IOException 예제

파일을 읽을 때 IOException이 발생할 수 있습니다.

import java.io.FileReader;
import java.io.IOException;

public class FileReadExample {
    public static void main(String[] args) {
        try {
            FileReader reader = new FileReader("test.txt");
        } catch (IOException e) {
            System.out.println("파일을 읽을 수 없습니다.");
            e.printStackTrace();
        }
    }
}
 
  • 파일이 존재하지 않거나 읽을 수 없는 상태라면 IOException이 발생합니다.

Checked Exception vs Unchecked Exception

구분 Checked Exception Unchecked Exception
예외 처리 강제 여부 예외 처리 필수 (try-catch 또는 throws) 예외 처리 선택
발생 시점 컴파일 시점에서 예외 처리 여부 확인 실행 중(Runtime) 예외 발생
주요 예제 IOException, SQLException, ClassNotFoundException 등 NullPointerException, ArrayIndexOutOfBoundsException, ArithmeticException 등

 

Checked Exception은 컴파일러가 예외 처리를 강제하는 예외로, 파일, 네트워크, 데이터베이스 작업 등에서 발생합니다.
예외 처리를 하지 않으면 컴파일 오류가 발생하므로, 반드시 try-catch 또는 throws를 사용해 처리해야 합니다.

반응형