0 课程地址
https://www.imooc.com/video/16723/0
1 本节介绍
发生异常不在界面显示500,404等业务人员看不明白的错误,转化为易读懂的方式。
2 异常捕获demo
2.1 异常捕获demo
ErrorHandler.java 控制层
package com.example.demo.exception; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /** * ErrorHandler * * @author 魏豆豆 * @date 2020/12/6 */ @Controller /** *@Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping 注解 */ @RequestMapping("/error") public class ErrorHandler { @RequestMapping("/err") public String error(){ int a = 1/0; return "templates/error"; } }
异常捕获类 IMoocExceptionHandler.java
此处可以看看@ControllerAdvice 常用三种处理方式
https://www.cnblogs.com/lenve/p/10748453.html
package com.example.demo.exception; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * IMoocExceptionHandler * * @author 魏豆豆 * @date 2020/12/6 */ @ControllerAdvice
//全局异常处理 public class IMoocExceptionHandler { //定义报错常量 public static final String ERROR_VIEW = "error"; @ExceptionHandler(value = Exception.class) public Object errorHandler(HttpServletRequest request, HttpServletResponse response,Exception e) throws Exception{ e.printStackTrace(); ModelAndView mav = new ModelAndView(); mav.addObject("url",request.getRequestURI()); mav.addObject("exception",e); mav.setViewName(ERROR_VIEW); return mav; } }
error.html
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8" /> <title>捕获全局异常</title> </head> <body> <h1 style="color: red">发生错误:</h1> <div th:text="${url}"></div> <div th:text="${exception.message}"></div> </body> </html>
测试结果: