바람직한 예외처리 방법을 살펴보았다. 예외 전환, 예외 감싸기가 핵심이다. JDBC 예외의 단점은 대부분의 예외가 복구 불가능함에도 불구하고 SQLException
이라는 뭉뚱그린 체크 예외를 뿌려준다는 것이었는데, 스프링은 데이터 액세스 기술에서 SQLException
을 의미있는 런타임 예외로 바꾸는 방식으로 해당 단점을 해결하고 있었다. 이 장에서 살펴본 주요 내용은 다음과 같다.
throws
를 남발하는 것은 위험하다.catch/throws
를 피하기 위해 런타임 예외로 포장하는 두가지 방법의 예외 전환이 있다.SQLException
은 대부분 복구할 수 없는 예외이므로 런타임 예외로 포장해야 한다.SQLException
의 에러 코드는 DB에 종속되기 때문에 DB에 독립적인 예외로 전환될 필요가 있다.DataAccessException
을 통해 DB에 독립적으로 적용 가능한 추상화된 런타임 예외 계층을 제공한다.DAO
를 데이터 액세스 기술에서 독립시키려면 인터페이스 도입과 런타임 예외 전환, 기술에 독립적인 추상화된 예외로 전환이 필요하다.