一、引言
web开发的时候,请求500,404等错误,为了界面友好化,整个站点抛任何异常的,全部拦截,统一返回
二、规则说明
1、新建一个class,取名
2、在class上添加注解,@ControllerAdvice
3、在class中添加一个方法
4、在方法上添加@ExceptionHandler拦截相应的异常信息
5、如果返回的是view --- 方法的返回值是ModelAndView
6、如果返回的是String或者是Json数据,那么需要在方法上添加@RequestBody注解
@ExceptionHandler 表示拦截异常
@ControllerAdvice 是 controller 的一个辅助类,最常用的就是作为全局异常处理的切面类
@ControllerAdvice 可以指定扫描范围
@ControllerAdvice 约定了几种可行的返回值,如果是直接返回 model 类的话,需要使用 @ResponseBody 进行 json 转换
返回 String,表示跳到某个 view
返回 modelAndView
返回 model + @ResponseBody
三、Demo
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(RuntimeException.class)
@ResponseBody
public Map<String, Object> exceptionHandler() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("errorCode", "101");
map.put("errorMsg", "系統错误!");
return map;
}
}
@ControllerAdvice
public class GlobalDefaultExceptionHandler{
@ExceptionHandler(value = Exception.class)
public String defaultErrorHandler(HttpServletRequest req, Exception e) {
return "对不起,服务器繁忙,请稍后再试!";
}
网友评论