본문 바로가기

예외

4.3 정리 예외를 잡아서 아무러 조치를 하지 않거나 의미 없는 throws 선언을 남발하는 것은 무책임하다. 예외는 복구하거나 예외처리 오브젝트로 의도적으로 전달하거나 적절한 예외로 전환해야 한다. 좀 더 의미있는 예외로 변경하거나, 불필요한 예외 처리를 피하기 위해 런타임 예외로 포장하는 두 가지의 방법의 예외 전환이 있다. 복구할 수 없는 예외는 가능한 빨리 런타임 예외로 전환하는 것이 바람직하다. 애플리케이션의 로직을 담기 위한 예외는 체크 예외로 만든다. JDBC의 SQLException은 대부분 복구할 수 없는 예외이므로 런타임 예외로 포장해야 한다. SQLException의 에러 코드는 DB에 종속되기 때문에 DB에 독립적인 예외로 전환될 필요가 있다. 스프링은 DataAccessException을 통해..
4.2 예외 전환 예외 전환의 목적 굳이 필요하지 않은 예외 처리를 줄여줌 로우레벨의 예외를 좀 더 의미있는 예외로 바꿔줌 JdbcTemplate의 DataAccessException SQLException을 런타임 예외로 포장 상세한 예외정보를 의미있고 일관성 있는 예외로 전환해서 추상화 4.2.1 JDBC의 한계 JDBC 자바 표준 JDK에서 가장 많이 사용되는 기능 중 하나 DB 접근 방법을 추상화된 API 형태로 정의 각 DB 업체가 JDBC 표준을 따라 만들어진 드라이버를 제공 DB에 상관없이 일관된 방법으로 개발 가능 JDBC API로 개발할 경우 DB 프로그램 개발 방법을 학습하는 부담을 줄여줌 그러나, DB를 자유롭게 변경해서 사용할 수 있는 유연한 코드를 보장해주지는 않음 비표준 SQL SQL 어느 정도 ..
4.1 사라진 SQLException 3장에서 JdbcTemplate을 적용할 때 SQLException이 사라졌다. SQLException은 JDBC API의 메소들이 던지는 것이므로 당연히 있어야 한다. 어디로 간 것인가 4.1.1 초난감 예외처리 예외 블랙홀 초난감 예외처리 예 /* * Example 1 */ try { // do something } catch(SQLException e) { } /* * Example 2 */ try { // do something } catch(SQLException e) { System.out.println(e); } /* * Example 3 */ try { // do something } catch(SQLException e) { e.printStackTrace(); } 예외를 잡고 아무것도 ..
4장. 예외 개요 자바 개발자가 신경쓰기 가장 귀찮아하는 것 중 하나 목차 4.1 사라진 SQLEXCEPTION 4.1.1 초난감 예외처리 예외 블랙홀 무의미하고 무책임한 throws 4.1.2 예외의 종류와 특징 4.1.3 예외처리 방법 예외 복구 예외처리 회피 예외 전환 4.1.4 예외처리 전략 런타임 예외의 보편화 add() 메소드의 예외처리 애플리케이션 예외 4.1.5 SQLException은 어떻게 됐나? 4.2 예외 전환 4.2.1 JDBC의 한계 비표준 SQL 호환성 없는 SQLException의 DB 에러정보 4.2.2 DB 에러 코드 매핑을 통한 전환 4.2.3 DAO 인터페이스와 DataAccessException 계층구조 DAO 인터페이스와 구현의 분리 데이터 액세스 예외 추상화와 DataAcce..