본문 바로가기

Archived(Programming)/Spring #2(기초)

예외처리

# 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