사용자 도구

사이트 도구


springframework:mvc:handlerexceptionresolver

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
springframework:mvc:handlerexceptionresolver [2015/10/19 17:41]
kwon37xi
springframework:mvc:handlerexceptionresolver [2021/07/14 12:49] (현재)
kwon37xi
줄 3: 줄 3:
   * Spring MVC의 예외 처리를 담당한다.   * Spring MVC의 예외 처리를 담당한다.
   * [[http://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc|Exception Handling in Spring MVC]]   * [[http://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc|Exception Handling in Spring MVC]]
 +  * [[springframework:mvc:controlleradvice|@ControllerAdvice]] 를 사용하는게 대세임.
 +  * [[springframework:problem_spring_web|Problem Spring Web]]
  
 ===== 기본 확장 ===== ===== 기본 확장 =====
줄 8: 줄 10:
   * 이때 ''logException()''과 ''buildLogMessage()'' 메소드를 Override하여 자신이 사용하는 로그 라이브러리에 로그를 남기도록 처리하는 것이 좋다.   * 이때 ''logException()''과 ''buildLogMessage()'' 메소드를 Override하여 자신이 사용하는 로그 라이브러리에 로그를 남기도록 처리하는 것이 좋다.
  
-===== @ControllerAdvice ===== 
-  * ''@ControllerAdvice''에 각종 예외 처리 핸들러(''@ExceptionHandler'')를 미리 등록해 두고 component-scan을 하면 자동 에러 처리가 된다. 
-  * [[http://www.javabeat.net/exception-controlleradvice-spring-3-2/|Exception Handling With @ControllerAdvice in Spring 3.2]] 
-<code java> 
-package javabeat.net; 
  
-import java.io.IOException; +===== 참조 ===== 
-import java.sql.SQLException; +  * [[http://www.baeldung.com/exception-handling-for-rest-with-spring|Error Handling for REST with Spring]]
- +
-import org.springframework.web.bind.annotation.ControllerAdvice; +
-import org.springframework.web.bind.annotation.ExceptionHandler; +
-import org.springframework.web.servlet.ModelAndView; +
-import org.springframework.web.servlet.config.annotation.EnableWebMvc; +
- +
-@ControllerAdvice +
-public class ControllerAdviceTest { +
-    @ExceptionHandler(IOException.class) +
-    public ModelAndView handleIOException(IOException exception){ +
-        ModelAndView andView new ModelAndView(); +
-        andView.setViewName("error"); +
-        return andView; +
-    } +
-    @ExceptionHandler(SQLException.class) +
-    public ModelAndView handleSQLException(SQLException exception){ +
-        ModelAndView andView new ModelAndView(); +
-        andView.setViewName("error"); +
-        return andView; +
-    } +
-    // JSON 에러 내면서 Http Status Code 변경 +
-    @ExceptionHandler(Exception.class) +
-    @ResponseBody +
-    public ResponseEntity<SomeErrorObject> exceptionHandler(Exception e) { +
-        // org.springframework.http.HttpStatus 를 참조할 것. +
-        HttpStatus httpStatus HttpStatus.INTERNAL_SERVER_ERROR; +
-        SomeErrorObject errorObject new SomeErrorObject(); +
- +
-        return new ResponseEntity<>(errorObject, httpStatus); +
-    } +
-+
-</code> +
- +
-===== 주요 Spring MVC Exception에 대해 오버라이드 하지 말 것 ===== +
-  * ''ControllerAdvice''나 ''ExceptionHandler''를 override 했을 경우 Spring이 기본으로 지정한 에러코드가 아닌 다른 에러코드로 응답 코드가 내려갈 수도 있다. +
-  * [[https://doanduyhai.wordpress.com/2012/05/06/spring-mvc-part-v-exception-handling/|Spring MVC part V: Exception handling | DuyHai's Java Blog]] +
-  * 주요 Exception들에 대해 올바른 응답 코드가 내려가도록 처리한다. +
-  * [[https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/mvc/support/DefaultHandlerExceptionResolver.html|DefaultHandlerExceptionResolver]]를 보면 각 예외별 응답 코드 기본값을 알 수 있다.+
  
springframework/mvc/handlerexceptionresolver.1445245877.txt.gz · 마지막으로 수정됨: 2015/10/19 17:41 저자 kwon37xi