Java 예외 처리

hyunnzl·2025년 4월 6일

자바

목록 보기
8/8
post-thumbnail

자바에서 예외(Exception)는 프로그램 실행 중 발생할 수 있는 비정상적인 상황을 의미한다. 예외를 제대로 처리하지 않으면 프로그램이 비정상 종료될 수 있으므로, 안정성을 위해 예외 처리는 필수이다.



예외의 종류

자바 예외는 크게 두 가지로 나뉜다.

종류설명
Checked Exception컴파일 시점에 예외 처리 여부를 확인 (예: IOException, SQLException)
Unchecked Exception실행 중(Runtime)에 발생, 예외 처리 강제 아님 (예: NullPointerException, ArrayIndexOutOfBoundsException)





예외 클래스 계층 구조

모든 예외는 Throwable 클래스의 하위이며, 다음과 같은 구조를 가진다.






try-catch-finally 문법

자바에서 예외를 처리하는 기본 구조는 다음과 같다.

try {
    // 예외가 발생할 수 있는 코드
} catch (ExceptionType e) {
    // 예외 발생 시 처리할 코드
} finally {
    // 예외 발생 여부와 관계없이 항상 실행 (선택)
}

예제

try {
    int result = 10 / 0;
} catch (ArithmeticException e) {
    System.out.println("0으로 나눌 수 없습니다.");
} finally {
    System.out.println("예외 처리 완료");
}





throw vs throws

키워드설명
throw예외를 직접 발생시킬 때 사용
throws메서드 선언부에서 예외 발생 가능성을 명시

예제

public void checkAge(int age) throws IllegalArgumentException {
    if (age < 0) {
        throw new IllegalArgumentException("나이는 음수가 될 수 없습니다.");
    }
}





사용자 정의 예외 만들기

직접 예외 클래스를 정의해서 사용할 수도 있다.

class MyException extends Exception {
    public MyException(String message) {
        super(message);
    }
}
throw new MyException("커스텀 예외 발생");





예외 처리 키워드 요약

키워드설명
try예외가 발생할 수 있는 코드 블록
catch예외 발생 시 실행할 코드 블록
finally예외 발생 여부와 상관없이 항상 실행됨
throw예외를 직접 발생시킬 때 사용
throws메서드 선언 시, 해당 메서드에서 예외 발생 가능 알림





최적의 예외 처리 방식

  • 가능한 한 구체적인 예외를 먼저 catch
  • 필요 이상으로 broad한 Exception catch 지양
  • 예외 메시지를 로그로 남기기
  • finally 블록은 리소스 해제용 (close(), disconnect() 등)에 활용

0개의 댓글