天天看點

Spring Boot統一異常處理一、@ControllerAdvice  二、HandlerExceptionResolver

在使用Spring Boot時,我們可以友善的使用以下兩種方式實作

一、@ControllerAdvice  

//示例:
@ControllerAdvice
public class ExceptionControllerAdvice {
	/**
     * 全局異常捕捉處理
     * @param exception
     * @return
     */
    @ResponseBody
    @ExceptionHandler(value = Exception.class)
    public Map<String,String> errorHandler(HttpServletResponse httpServletResponse, Exception exception) {
    	Map<String,String> errorMap = new HashMap<>();
    	errorMap.put("code","500");
    	errorMap.put("msg","異常提示");
    	return errorMap;
    }
}
           

此方式中@ExceptionHandler指定對哪種類型的異常進行處理。

二、HandlerExceptionResolver

//示例:
@Component
public class RestApiHandlerExceptionResolver implements HandlerExceptionResolver {


    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
    	ModelAndView mv = new ModelAndView();
    	mv.setStatus(HttpStatus.INTERNAL_SERVER_ERROR);
    	mv.addObject("msg", "異常提示");
        return mv;
    }
}
           

此方式将對所有類型的異常進行處理  

使用此方式需注意保證将實作類交給Spring容器進行托管,可以通過@Component注解,也可通過其他方式

繼續閱讀