[Java] 체크 예외 / 언체크 예외

개발자·2022년 2월 20일
0

Java

목록 보기
6/8
post-thumbnail
post-custom-banner

에러 & 예외

에러(Error)

프로그램 오류, 메모리 부족 등 시스템 자체에 비정상적인 상황이 발생한 문제로 프로그램에 심각한 문제를 발생시킬 수 있다. 또한, 개발자가 미리 예측해 방지할 수 없다.

예외(Exception)

시스템 로직 내부에서 예기치 못한 문제가 발생한 것으로 개발자가 예외 처리를 통해 미리 방지할 수 있다.

체크 예외(Checked Exception)

RuntimeException의 하위 클래스가 아닌 Exception 클래스이다. 체크 예외는 반드시 예외를 처리하는 코드를 함께 작성해야 한다. try/catch문 또는 throws를 이용해 예외를 처리할 수 있다. 만약 예외를 처리하지 않으면 컴파일 에러가 발생한다.

ex) FileNotFoundException, ClassNotFoundException

언체크 예외(Unchecked Exception)

RuntimeException의 하위 클래스이다. 에러 처리를 강제하지 않아 에러 처리를 하지 않아도 컴파일 에러가 발생하지 않는다. 주로 프로그램에 문제가 있을 때 오류가 발생하도록 의도된 것이다. 개발자가 부주의해 발생할 수 있는 경우 오류가 발생하도록 만들어졌다.

ex) NullPointerException, IllegalArgumentException

중요 ❗️
Spring이 제공하는 트랜잭션(@Transactional)은 기본적으로 에러 발생 시 체크 예외는 롤백이 되지 않고, 언체크 예외(RuntimeException 계열)는 롤백이 된다. 언체크 예외를 롤백하는 이유는 복구 가능성이 없어 예외 처리를 강제하지 않기 때문이다.
하지만 option으로 언체크 예외도 롤백을 하지 않도록/체크 예외도 롤백을 하도록 설정할 수 있다.


Ref.

profile
log.info("공부 기록 블로9")
post-custom-banner

0개의 댓글