웹개발/JAVA

JAVA의 예외 처리 (Exception Handling)

bergerac 2025. 3. 11. 09:11

예외(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