반응형
💡CheckedException
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class CheckedExceptionExample {
public static void main(String[] args) {
try {
File file = new File("non_existent_file.txt");
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
scanner.close();
} catch (FileNotFoundException e) {
System.err.println("파일을 찾을 수 없습니다.");
}
}
}
|
cs |
위의 코드에서는 파일을 읽고자 시도하고 있습니다. File 클래스와 Scanner 클래스는 I/O 작업과 관련되어 있으며 FileNotFoundException은 Checked Exception입니다. 따라서 이 예외를 처리하기 위해 try-catch 블록을 사용하고, 파일이 존재하지 않을 때 예외 처리 코드를 실행합니다.
- Exception 클래스를 상속받는 예외 클래스: Checked Exception은 Java의 Exception 클래스를 상속받는 예외 클래스로 표현됩니다. 사용자 정의 예외 클래스도 마찬가지로 Exception 클래스를 상속받아야 합니다.
- 예외 처리 강제: Checked Exception은 컴파일 시 예외 처리를 강제합니다. 즉, 예외가 발생하면 해당 예외를 처리하는 코드 블록을 작성해야 합니다. 이것은 try-catch 블록 또는 메서드 선언부에 throws 절을 통해 처리될 수 있습니다.
- 예외 처리 생략 시 컴파일 오류: Checked Exception을 처리하지 않고 무시하면 컴파일 오류가 발생합니다. 이로 인해 예외 처리를 잊는 것을 방지하고 안정성을 높입니다.
- I/O 연산, 데이터베이스 연결, 네트워크 통신과 같은 I/O 관련 작업에서 주로 발생: Checked Exception은 주로 입출력 작업과 관련된 예외로 사용됩니다.
💡Unchecked Exception (RuntimeException)
1
2
3
4
5
6
7
8
9
10
11
12
|
public class UncheckedExceptionExample {
public static void main(String[] args) {
int[] numbers = {1, 2, 3};
try {
int result = numbers[5] / 0;
System.out.println("결과: " + result);
} catch (ArithmeticException e) {
System.err.println("0으로 나누기 예외가 발생했습니다.");
}
}
}
|
cs |
이 코드는 배열의 범위를 넘어서 5번째 요소에 접근하고 있으며 0으로 나누려고 시도하고 있습니다. 이는 Unchecked Exception인 ArrayIndexOutOfBoundsException와 ArithmeticException을 발생시킵니다. 예외 처리는 선택 사항이며, 이 코드에서는 ArithmeticException을 처리하고 있습니다.
- RuntimeException 클래스를 상속받는 예외 클래스: Unchecked Exception은 RuntimeException 클래스를 상속받는 예외 클래스로 표현됩니다. 또한 RuntimeException 클래스를 상속받지 않는 사용자 정의 예외도 Unchecked Exception으로 간주될 수 있습니다.
- 예외 처리 선택 사항: Unchecked Exception은 예외 처리가 선택 사항입니다. 즉, 개발자가 필요에 따라 예외 처리를 할 수 있지만 강제로 처리할 필요는 없습니다.
- 예외 처리 생략 시 런타임 오류: Unchecked Exception은 예외 처리를 생략해도 컴파일은 되지만, 실행 시 오류가 발생하게 됩니다. 따라서 개발자가 예외 처리를 선택적으로 수행할 책임을 가집니다.
- 배열 인덱스 오버플로우, NullPointerException, ArithmeticException과 같은 런타임 시 예외 상황에서 주로 발생: Unchecked Exception은 주로 프로그램 실행 중에 발생하는 예외로, 예상치 못한 상황 또는 프로그램 논리 오류를 나타냅니다.
💻결론
- Checked Exception은 예외 처리를 강제하며 컴파일러가 확인하는 예외입니다.
- Unchecked Exception은 예외 처리가 선택 사항이며 컴파일러가 확인하지 않습니다.
- Checked Exception은 주로 I/O 관련 작업에서 발생하고, Unchecked Exception은 런타임 시 발생하는 예외 상황에서 주로 발생합니다.
- 개발자는 Checked Exception을 무시할 수 없으며 Unchecked Exception은 예외 처리를 선택적으로 수행할 수 있습니다.
반응형
'프로그래밍 > Java' 카테고리의 다른 글
[Java] Java가 Call by Value인 이유 (0) | 2023.10.12 |
---|---|
[Java] Call by Reference와 Call by Value의 차이 (0) | 2023.10.12 |
[Java] Interface와 Abstract Class의 차이 (0) | 2023.10.11 |
[Java] 클래스, 객체, 인스턴스의 차이 (2) | 2023.10.10 |
[Java] JVM의 구조 (0) | 2023.10.05 |