Java Checked Exception, Unchecked Exception
포스트
취소

Java Checked Exception, Unchecked Exception

개요

Java에서 Error가 발생했을 때 처리하는 기본적인 개념을 한번 가볍게 정리하고자 한다.

Error

  • 코드를 작성할 때 Error는 예측할 수 있는 Error와 예측할 수 없는 Error로 나뉜다.
  • 또한 복구할 수 없는 Error와 복구할 수 있는 Error로도 구분할 수 있다.
  • Java에선 복구할 수 없는 Error는 Error Class를 상속받고, 복구할 수 있는 Error는 Exception을 상속받는다.

Throwable

Throwable class

  • 출처 https://devlog-wjdrbs96.tistory.com/351

모두 Throwable을 상속받으며, 호출한 상위 메서드로 처리를 위임할 수 있다.

Checked Exception

  • 예측할 수 있는 모든 예외.
  • 꼭 처리를 해야하며 Spring에선 Controller에서 throw하면 결국 Error page(status 500)로 전달된다.
    • Java Application에서는 Error page로 전달하는 경우가 없으니 더 신중하게 처리를 해야한다.
  • Compile 단계에서 보통 확인이 가능하므로 예외에 맞춰서 try catch로 처리할지 아니면 throw할 것인지 정해진다.

실무에선 보통 Checked Exception은 문제가 되지 않는다.

Unchecked Exception

  • 다양한 예측이 어려운 예외.
  • 물론 예측이 아예 안되는 것은 아니다. 대표적인 IndexOutOfBounds 혹은 NullPoint는 코드를 잘 살펴보면 예측이 가능하다.
    • 하지만 바쁘게 코딩을 하다보면 놓치는 경우가 많다..
  • 예측 가능한 곳에서 Exception try catch로 잡아서 처리할 수 있고 Spring에선 적절한 error page나 error code로 응답한다.

Spring Transaction

  • Checked Exception일 경우엔 roll back 되지 않는다.
  • roll back이 필요한 경우엔 Unchecked Exception을 throw 해서 처리되도록 한다.
    • 또는 rollbackFor를 활용
  • 관련해서 검색하면 내용이 많으니 넘어가도록 한다.

마무리

  • Exception은 언제봐도 머리아픈듯…
  • Spring에서 Exception을 어떻게 처리할지에 대해 다음편을 통해서 확인해 볼 예정
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

SpringBoot 프로젝트를 kubernetes 환경에 배포

JAXBContext, Unmarshaller와 lombok