체크 예외는 컴파일러가 강제적으로 예외 처리 코드를 작성하도록 하는 예외입니다. 이러한 예외는 주로 외부 리소스와의 상호 작용에서 발생하며, 프로그래머가 명시적으로 예외 처리 코드를 작성하지 않으면 컴파일이 되지 않습니다. 주로 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 블록이 사용되었습니다.
언체크 예외는 컴파일러가 강제적으로 예외 처리를 요구하지 않는 예외로, 프로그래머의 실수나 프로그램 실행 중에 발생하는 예외입니다. 이러한 예외는 주로 프로그래머의 경험과 주의에 의존하며, 명시적인 예외 처리 코드를 작성하지 않아도 컴파일이 됩니다. 대표적인 예로 NullPointerException, ArrayIndexOutOfBoundsException, ArithmeticException 등이 있습니다.
public class UncheckedExceptionExample {
public static void main(String[] args) {
int[] numbers = {1, 2, 3};
System.out.println(numbers[5]); // ArrayIndexOutOfBoundsException 발생
}
}
위의 예시에서 배열의 길이를 넘어가는 인덱스에 접근하려 하면 ArrayIndexOutOfBoundsException이 발생합니다. 이는 언체크 예외로, 별도의 예외 처리 코드 없이 실행됩니다.
체크 예외는 주로 외부 리소스와의 상호 작용에서 발생하며, 컴파일러가 강제적인 예외 처리를 요구합니다. 반면 언체크 예외는 주로 프로그래머의 실수나 런타임 중 발생하는 예외로, 명시적인 예외 처리 코드가 필요하지 않습니다. 체크 예외와 언체크 예외는 예외 처리의 강제성 여부에서 주요한 차이가 있습니다.
[자바 CS지식] 추상클래스와 인터페이스의 차이 (0) | 2024.02.12 |
---|---|
[자바 CS지식] 자바의 객체지향 프로그래밍 특징 (0) | 2024.02.12 |
[자바 CS지식] 오버로딩과 오버라이딩의 차이 (0) | 2024.02.12 |
[자바 CS지식] 좋은 객체 지향 설계 SOLID 원칙 (0) | 2024.02.11 |
[자바 CS지식] Call By Reference와 Call By Value의 차이점 (0) | 2024.02.11 |