在使用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注解,也可通過其他方式