一、自定义异常页面
统一的异常页面:
1,SpringBoot默认情况下,把所有错误都重新定位到/error这个处理路径上,由BasicErrorController类完成处理;
2,SpringBoot提供了默认的替换错误页面的路径:
以前当我们访问页面404时,自定义页面会出现
若需要自定义页面,则在public下创建error目录,并添加错误页面,如果是freemarker,则在templates创建error页面,添加对应的模板即可。如:
静态错误页面默认结构:
src/
resources/
public/
error/
404.html
401.html
5xx.html
也可以使用模板页面:
src/
resources/
templates/
error/
404.ftl
401.ftl
5xx.ftl
当访问页面出现相应错误时,就会转发到对应的错误页面。
二、默认异常处理
项目结构:
1)@ControllerAdvice
通过使用@ControllerAdvice定义统一的异常处理类,而不是在每个Controller中逐个定义。@ExceptionHandler用来定义函数针对的异常类型。
//如果自定义了500页面,就不能在这里使用该注解,否则出现500时会在该方法处理,不会自动跳转到500,除非自己在这里跳转
@ControllerAdvice
public class ErrorControllerAdvice {
@ExceptionHandler(Exception.class)
//handlerMethod可以获取错误的方法类和类名等信息
public String handlerException(Exception ex, HandlerMethod handlerMethod){
System.out.println("异常处理");
System.out.println(ex.getMessage());
System.out.println(handlerMethod.getBean().getClass());
System.out.println(handlerMethod.getMethod().getName());
return "error/500.html";
}
}
2)错误的Controller类
@Controller
public class FreekMarkerController {
//@ResponseBody
@RequestMapping("/hel")
public String hello(Model model) {
int i=1/0;
model.addAttribute("name","java");
return "hell";
}
}
3)在public/error下定义500.html页面
4)访问地址localhost/hel
出现页面:
空主题输出: