예외처리 알아보기
Checked Exception, Unchecked Exception
체크드 익셉션과 언 체크드 익셉션은 런타임에 예외 처리를 반드시 처리해야 하는지에 대한 관점이다.
Checked Exception
예외가 발생할 사례를 개발자는 컴파일 이전에 알고 있기 때문에 CheckedException 이 발생하는 상황에 미리 예외처리를 명시해야 한다.
이 예외는 Exception 클래스를 상속 받고 있으며, 대표적으로 IOException, ClassNotFoundException 같은 예외 클래스가 존재한다.
Unchecked Exception
예외가 발생할 것을 컴파일 시점에 알지 못하여, 런타임 중 발생하는 예외 상황이다.
이 예외는 RuntimeException 클래스를 상속 받고 있으며, 대표적으로 NullPointerException 과 같은 예외 클래스가 존재한다.
Checked Exception 을 어떻게 처리할 것인가?
Checked Exception 은 try-catch 또는 throws 를 항상 강제하기 때문에, 이를 계속 호출자에게 연쇄적으로 구문을 작성하지 말고 Unchecked Exception 으로 재구성 하여 예외를 관리하는 것을 권장한다.
스프링에서 트랜잭션 템플릿 내부에서 발생하는 예외
스프링에서 트랜잭션은 논리적 흐름을 하나의 단위로 묶어주는 것을 의미하며, 트랜잭션 특성 상 멱등성을 지켜야한다.
그렇기 때문에 예외가 발생하면 롤백을 지원하게 되는데, RuntimeException 이 발생하면 롤백이 수행되어 원자성을 제공한다.
Summary
- Checked Exception: RuntimeException을 상속하지 않은 클래스이며, 예외처리를 강제함
- Unchecked Exception: 코드에 개발자가 예상치 못한 에러가 발생할 수 있기 때문에 예외처리를 강제하지 않음
참고 자료
seungjjun.tistory.com
Checked Exception과 Unchecked Exception
inpa.tistory.com
(Un)Checked Exception과 트랜잭션의 오해와 진실