개요
Java에서 Error가 발생했을 때 처리하는 기본적인 개념을 한번 가볍게 정리하고자 한다.
Error
- 코드를 작성할 때 Error는 예측할 수 있는 Error와 예측할 수 없는 Error로 나뉜다.
- 또한 복구할 수 없는 Error와 복구할 수 있는 Error로도 구분할 수 있다.
- Java에선 복구할 수 없는 Error는 Error Class를 상속받고, 복구할 수 있는 Error는 Exception을 상속받는다.
Throwable
출처 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을 어떻게 처리할지에 대해 다음편을 통해서 확인해 볼 예정