예외(Exception)란?
예외(Exception): 프로그램 실행 중 발생하는 예상치 못한 오류
- 프로그램이 실행되다가 예외가 발생하면 해당 코드의 실행이 중단됨
- **예외 처리(Exception Handling)**를 통해 프로그램이 정상적으로 동작하도록 대응 가능
int result = 10 / 0; // ArithmeticException: / by zero
자바 예외 클래스 구조
Java에서 모든 예외와 오류는 ``** 클래스**를 상속받으며, 두 개의 주요 하위 클래스로 나뉩니다.
🔹 Throwable 클래스 계층 구조
Throwable
├── Exception (예외)
│ ├── Checked Exception (컴파일 시점 예외)
│ └── Unchecked Exception (런타임 예외)
└── Error (오류)
<Throwable과 Exception, Error 비교>
| Exception | 프로그램이 처리할 수 있는 예외 | ✅ 예외 처리 가능 |
| Checked Exception | 컴파일 시점에 체크되는 예외 | ✅ 반드시 예외 처리 필요 |
| Unchecked Exception | 실행(런타임) 시점에 발생하는 예외 | ✅ 예외 처리 권장 |
| Error | 시스템 수준의 오류 | ❌ 개발자가 직접 처리 불가 |
Exception(예외) 클래스
예외는 개발자가 직접 해결할 수 있는 문제를 정의합니다.
1) Checked Exception (컴파일 시점 예외)
- 컴파일 시점에 반드시 처리해야 하는 예외
- 예외 처리를 하지 않으면 컴파일 오류 발생
- 예: IOException, SQLException, ClassNotFoundException
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class CheckedExceptionExample {
public static void main(String[] args) {
try {
Scanner scanner = new Scanner(new File("test.txt"));
} catch (FileNotFoundException e) {
System.out.println("파일을 찾을 수 없습니다: " + e.getMessage());
}
}
}
2) Unchecked Exception (런타임 예외)
- 실행(런타임) 중 발생하는 예외
- 개발자의 실수로 인해 발생하는 예외이며, 컴파일러가 체크하지 않음
- 예: NullPointerException, ArithmeticException, ArrayIndexOutOfBoundsException
public class UncheckedExceptionExample {
public static void main(String[] args) {
int result = 10 / 0; // ArithmeticException 발생
System.out.println("결과: " + result);
}
}
Error(오류) 클래스
- 프로그램 외부에서 발생하는 시스템 수준 문제
- 개발자가 직접 처리할 수 없음
- 예: OutOfMemoryError, StackOverflowError
public class ErrorExample {
public static void main(String[] args) {
throw new OutOfMemoryError("메모리 부족 오류");
}
}
예외 처리 방법
1. try - catch를 활용하는 방법 - https://bergerac.tistory.com/32
2. throw&throws 를 활용하는 방법 - https://bergerac.tistory.com/33
다음 링크를 클릭하면 해당 키워드를 사용하여 각각 try-catch 문을 활용하는 방법과 throw&throws를 활용하는 방법에 대한 포스팅을 볼 수 있다.
'웹개발 > JAVA' 카테고리의 다른 글
| JAVA의 예외처리 (Throw/Throws) (1) | 2025.03.13 |
|---|---|
| JAVA 예외처리(try- catch 블록 ) (1) | 2025.03.12 |
| Type Casting(형변환)/Polymorphism(다형성) (1) | 2025.03.10 |
| final (0) | 2025.03.09 |
| 캡슐화(Encapsulation// getter&setter) (1) | 2025.03.08 |