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>

 

测试结果:

 

posted on 2020-12-06 14:42  菜鸟乙  阅读(107)  评论(0编辑  收藏  举报