springboot错误处理(error页面)
- 在 exception 包下创建 GlobalExceptionHandler 类
代码如下:
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value = Exception.class)
public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
ModelAndView mav = new ModelAndView();
mav.addObject("exception", e);
mav.addObject("url", req.getRequestURL());
mav.setViewName("error前端页面的名称");
return mav;
}
}
- 准备一个有问题的 Controller,这里我准备一个hello类
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class hello{
@RequestMapping("/hello")
public void hello()throws Exception {
if (true) {
throw new Exception("错误页面!");
}
}
}
- 准备前端页面,放在 templates 下,这里准备一个error.html
<!DOCTYPE html>
<head lang="en">
<meta charset="UTF-8" />
<title>统一异常处理</title>
</head>
<body>
<div style="width:500px;border:1px solid lightgray;margin:200px auto;padding:80px">
系统出现了异常,异常原因是:[[${exception}]]<br><br>
出现异常的地址是:[[${url}]]
</div>
</body>
</html>
- 重启测试
小坑指南:
刚开始前端页面始终获取不到 error 参数,因为之前的前端用${url}
获取,正确代码应该用[[${url}]]