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를 사용해 처리해야 합니다.
'프로그래밍언어' 카테고리의 다른 글
[Swift] Property Wrapper: 개념, 사용법, 사용자 정의 (0) | 2025.02.19 |
---|---|
[Swift] UnsafePointer, UnsafeMutablePointer, UnsafeRawPointer 차이점과 사용법 (0) | 2025.02.19 |
[Swift] COW (Copy-On-Write) (0) | 2025.02.16 |
[Swift] Actor와 Structured Concurrency (0) | 2025.02.16 |
[Swift] Distributed Actor (0) | 2025.02.16 |