若我们开发项目时,会经常返回404,500错误,这种错误在生产开发是不允许出现的,因此就需要对这类错误进行控制。
这里运用了Spring切面的思想,对异常报错进行拦截。
会用到的注解
@ExceptionHandler
表示拦截异常
@ControllerAdvice
1、作为全局异常处理的切面类
2、可以指定扫描范围
3、对于返回值有很好的处理。如果是直接返回 model 类的话,需要使用 @ResponseBody 进行 json 转换返回 String,表示跳到某个 view,返回 modelAndView,返回 model + @ResponseBody
下面为一拦截小Demo
新建拦截类GlobalExceptionHandler
package com.sm.controller; import java.util.HashMap; import java.util.Map; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(RuntimeException.class) @ResponseBody public Map<String, Object> exceptionHandler() { Map<String, Object> map = new HashMap<String, Object>(); map.put("errorCode", "500"); map.put("errorMsg", "系統错误!"); return map; } }新建异常类IndexController
package com.sm.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class IndexController { @RequestMapping("/indexController") public String index() { int i = 1/0; return "IndexController"; } }
启动项目:
访问http://localhost:8081/indexController
异常错误已成功拦截。