# Spring 예외처리 개요
- 서버에서 발생된 예외를 최종 사용자에게 전달되는 것을 방지
- DAO와 Service에서 발생된 예외는 Controller로 모여짐
- System 예외는 Business 예외로 다시 던지는(re-throwing) 방식 사용
- @ExceptionHadnler와 @ControllerAdvice를 사용하여 예외를 처리
# Spring 예외처리 특징
1) 컨트롤러 기반
- 부가기능을 제공하는 Advice 클래스를 작성함
- XML 설정 파일에 <aop:config>를 이용해서 Aspect를 설정함(=어드바이스와 포인트 컷 설정)
2) 글로벌 Exception 핸들러
- 예외처리는 cross-cutting concern, 어플리케이션 전체에 포인트컷이 적용되어야 함
- @ControllerAdvice 어노테이션을 포함한 클래스는 전역 예외처리 컨트롤러가 됨
- 컨트롤러에서 캐치한 예외는 JSP같은 View나 혹은 JSON으로 응답이 가능
# Mybatis에서의 예외처리
- JDBC 관련 코드는 대부분 SQLException 발생
- 대부분의 SQL Exception은 복구가 불가능
- Spring-Mybatis 는 SQLException을 DataAccessException(RuntimeException)으로 re-throwing함
- DataAccessException으로부터 SQLException을 추출하여 getErrorCode() 메서드로 에러코드 확인 가능
# @ControllerAdvice 특징
스프링 3.2 이상에서 사용가능
@Controller나 @RestController에서 발생하는 예외를 catch함
스프링 4.0 이상에서는 특정한 컨트롤러만 지정해서 catch 가능함
'Archived(Programming) > Spring #2(기초)' 카테고리의 다른 글
트랜잭션과 로깅 (0) | 2020.03.18 |
---|---|
PointCut 표현식과 Advisor 구현 (0) | 2020.03.17 |
AOP(Aspect Oriented Programming) (0) | 2020.03.17 |
Dynamic SQL (0) | 2020.03.17 |
Mapper XML 파일 (1) | 2020.03.16 |