개발메모/간단정리

[간단정리] JAVA - Checked Exception vs Unchecked Exception

99C0RN 2022. 8. 11. 21:26

개요

Checked Exception, Unchecked Excpetion 차이점 알아보기


ERROR? EXCEPTION?

Error(에러)
에러는 시스템에 비정상적인 상황이 발생한 경우에 해당한다.
ex) OutOfMemoryError, ThreadDeath, StackOverflowError 등이 에러에 해당
(일반적으로 애플리케이션단에서 복구할 수 없는 상황)

 

Error는 합리적인 응용 프로그램이 잡아내려고 해서는 안 되는 심각한 문제를 나타내는 Throwable의 하위 클래스입니다. 이러한 오류는 대부분 비정상적인 상태입니다.

https://docs.oracle.com/javase/6/docs/api/java/lang/Error.html



Exception(예외)
예외란 입력 값에 대한 처리가 불가능하거나, 프로그램 실행 중에 참조된 값이 잘못된 경우 등 정상적인 프로그램의 흐름을 어긋나는 경우를 말한다. 그리고 자바에서 예외는 개발자가 직접 처리할 수 있기 때문에 예외 상황을 미리 예측하여 핸들링할 수 있다.

 

Exception 클래스와 그 하위 클래스는 합리적인 응용 프로그램이 포착할 수 있는 조건을 나타내는 Throwable 형식입니다.

https://docs.oracle.com/javase/6/docs/api/java/lang/Exception.html


예외 구분

예외는 Checked Exception과 Unchecked Exception으로 구분된다.

Checked Exception
- RuntimeException을 상속하지 않은 예외 클래스
- 명시적인 예외 처리를 강제하기 때문에 Checked Exception이라 한다.
  반드시 try~catch로 예외를 잡거나, throw로 호출한 메소드에게 예외를 던져야 한다.

Unchecked Exception
- RuntimeException을 상속하는 예외 클래스
- 명시적인 예외 처리를 강제하지 않기 때문에 Uncheked Exception이라고 한다.

 

구분 Checked Excpetion Unchecked Exception
확인 시점 컴파일(Compile) 시점 런타임(Runtime) 시점
예외 처리 명시적 예외 처리 강제
(반드시 예외 처리해야함)
명시적 예외 처리 강제하지 않음
트랜잭션 처리 예외 발생시 롤백하지 않음 예외 발생시 롤백해야함
종류 IOException, FileNotFoundException 등 NullPointerException, ClasssCastException 등


Checked Exception이 Rollback되지 않는 이유

기본적으로 Checked Exception은 복구가 가능하다는 메커니즘을 가지고 있다.
예를 들어, 특정 이미지 파일을 찾아서 전송해 주는 함수에서 이미지를 찾지 못 했을 경우 기본 이미지를 전송한다는 복구 전략을 가질 수 있다. 정리하자면, 복구가 가능하니 Rollback은 진행하지 않는다는 의미이다.



Refer
https://steady-coding.tistory.com/583