예외처리 알아보기
Checked Exception, Unchecked Exception
체크드 익셉션과 언 체크드 익셉션은 런타임에 예외 처리를 반드시 처리해야 하는지에 대한 관점이다.
예외가 발생할 사례를 개발자는 컴파일 이전에 알고 있기 때문에 CheckedException 이 발생하는 상황에 미리 예외처리를 명시해야 한다.
이 예외는 Exception 클래스를 상속 받고 있으며, 대표적으로 IOException, ClassNotFoundException 같은 예외 클래스가 존재한다.
예외가 발생할 것을 컴파일 시점에 알지 못하여, 런타임 중 발생하는 예외 상황이다.
이 예외는 RuntimeException 클래스를 상속 받고 있으며, 대표적으로 NullPointerException 과 같은 예외 클래스가 존재한다.
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과 트랜잭션의 오해와 진실