언체크 예외

SungMin·2026년 6월 4일

자바 심화 정리

목록 보기
27/34

언체크 예외는 말 그대로 컴파일러가 예외 처리 여부를 검사하지 않는 예외이다.
언체크 예외도 체크 예외와 동일하게 try-catch로 처리할 수 있다.
차이점은 예외를 처리하지 않을 경우 throws 선언을 생략할 수 있다는 점이다.

즉, 예외를 잡지 않으면 자동으로 상위 호출자에게 전파된다.


체크예외 vs 언체크 예외

  • 체크 예외(Checked Exception): 예외를 처리하지 않으면 반드시 throws를 선언하여 예외를 던져야 한다.
  • 언체크 예외(Unchecked Exception): 예외를 처리하지 않아도 throws 선언을 생략할 수 있다.

package exception.basic.unchecked;

public class MyUncheckedException extends RuntimeException {
    // RuntimeException을 상속 받은 예외는 언체크 예외가 된다.
    
    public MyUncheckedException(String message) {
        super(message);
    }
}


package exception.basic.unchecked;

public class UnCheckedCatchMain {
    public static void main(String[] args) {
        Service service = new Service();
        service.callCatch();
        System.out.println("정상 종료");
    }


}


package exception.basic.unchecked;

public class Service {
    // unChecked 예외는 예외를 잡거나, 던지지 않아도 된다.
    // 예외를 잡지 않으면 자동으로 밖으로 던진다.
    Client client = new Client();

    public void callCatch() {
        try {
            client.call();
        } catch (MyUncheckedException e) {
            // 예외 처리 로직
            System.out.println("예외 처리, message = " + e.getMessage());
        }
        System.out.println("정상 로직");
    }

    // 예외를 잡지 않아도 된다.
    // 자연스럽게 상위로 넘어간다.
    // 체크 에예외 다르게 throws 예외 선언을 하지 않아도 된다.
    public void callThrow() {
        client.call();
    }

}


[정리]

  • RuntimeException을 상속받으면 언체크 예외가 된다.
  • 언체크 예외도 try-catch로 처리할 수 있다.
  • 언체크 예외는 throws 선언을 생략할 수 있다.
  • 예외를 처리하지 않으면 자동으로 상위 호출자에게 전파된다.
profile
오늘도 한 걸음씩 나아가

0개의 댓글