필수 지식: 예외 처리 전략과 원칙
SQLException
에 대한 고민SQLException
은 복구 가능한 예외인가.
SQLException
은 코드 레벨에서 복구할 방법이 없다.DB 커넥션 풀이 꽉 차서 DB 커넥션을 가져올 수 없는 경우
잘못된 SQL 문법
제약 조건 위반
DB 서버 다운..
네트워크 불안정
기타 등등…
SQLException
?
⇒ DAO 밖에서 SQLException
을 다룰 가능성은 거의 없으므로 가능한 언체크/런타임 예외로 전환해야한다.
JdbcTemplate 템플릿과 콜백 안에서 발생하는 모든 SQLException
→ 런타임 예외인 DataAccessException
으로 포장해서 던져준다.
JdbcTemplate 을 사용하는 UserDao 메서드
: 필요한 경우에만 런타임 예외, DataAccessException
을 잡아서 처리하고 그 외는 무시
DataAccessException
는 런타임 예외
update()
, queryForInt()
, query()
…그 밖에도 스프링 API 메서드에 정의된 대부분 예외는 런타임 예외
⇒ 발생 가능한 예외가 있다고 해서 이를 처리하도록 강제하지 않는다.