필수 지식: 예외 처리 전략과 원칙

SQLException 에 대한 고민

  1. SQLException 은 복구 가능한 예외인가.
  2. 시스템 예외라면 당연히 애플리케이션 레벨에서 복구할 수 없다.
  3. 애플리케이션 코드의 버그나 미처 다루지 못한 범위를 벗어난 값 때문에 발생한 예외 역시 복구 불가
  4. ISERT 문에 넣을 파라미터 값을 미리 체크하지 않아 발생한 SQLException?

⇒ DAO 밖에서 SQLException 을 다룰 가능성은 거의 없으므로 가능한 언체크/런타임 예외로 전환해야한다.

스프링의 JdbcTemplate 은 이 예외 처리 전략을 따르고 있다.

그 밖에도 스프링 API 메서드에 정의된 대부분 예외는 런타임 예외

⇒ 발생 가능한 예외가 있다고 해서 이를 처리하도록 강제하지 않는다.