상세 컨텐츠

본문 제목

[자바 CS지식] 체크 예외와 언체크 예외/런타임 예외의 차이

JAVA

by 소란한소란 2024. 2. 12. 15:51

본문

728x90

체크 예외 (Checked Exception)

체크 예외컴파일러가 강제적으로 예외 처리 코드를 작성하도록 하는 예외입니다. 이러한 예외는 주로 외부 리소스와의 상호 작용에서 발생하며, 프로그래머가 명시적으로 예외 처리 코드를 작성하지 않으면 컴파일이 되지 않습니다. 주로 IOException, SQLException과 같은 입출력이나 데이터베이스 관련 예외가 체크 예외에 해당합니다.

 

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

public class CheckedExceptionExample {
    public static void main(String[] args) {
        File file = new File("example.txt");
        
        try {
            FileReader reader = new FileReader(file);
            // 파일 읽기 작업 수행
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

위의 예시에서 FileReader 객체를 생성하는 부분에서 IOException이 발생할 수 있기 때문에, 이 예외를 처리하기 위해 try-catch 블록이 사용되었습니다.

 


 

언체크 예외 / 런타임 예외 (Unchecked Exception, Runtime Exception)

언체크 예외는 컴파일러가 강제적으로 예외 처리를 요구하지 않는 예외로, 프로그래머의 실수나 프로그램 실행 중에 발생하는 예외입니다. 이러한 예외는 주로 프로그래머의 경험과 주의에 의존하며, 명시적인 예외 처리 코드를 작성하지 않아도 컴파일이 됩니다. 대표적인 예로 NullPointerException, ArrayIndexOutOfBoundsException, ArithmeticException 등이 있습니다.

 

public class UncheckedExceptionExample {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3};
        System.out.println(numbers[5]); // ArrayIndexOutOfBoundsException 발생
    }
}

 

위의 예시에서 배열의 길이를 넘어가는 인덱스에 접근하려 하면 ArrayIndexOutOfBoundsException이 발생합니다. 이는 언체크 예외로, 별도의 예외 처리 코드 없이 실행됩니다.

 


Java Exception 구조

결론

체크 예외는 주로 외부 리소스와의 상호 작용에서 발생하며, 컴파일러가 강제적인 예외 처리를 요구합니다. 반면 언체크 예외는 주로 프로그래머의 실수나 런타임 중 발생하는 예외로, 명시적인 예외 처리 코드가 필요하지 않습니다. 체크 예외언체크 예외예외 처리의 강제성 여부에서 주요한 차이가 있습니다.

 

 

 

728x90

관련글 더보기