知识讲解本节将从:自定义error页面、@ExceptionHandler注解以及@ControllerAdvice,等三种方式讲解Spring Boot应用的异常统一处理。
自定义error页面
@ExceptionHandler注解
@ControllerAdvice注解
1.自定义error页面
在Spring Boot Web应用的src/main/resources/templates目录下添加error.html页面,访问发生错误或异常时,Spring Boot将自动找到该页面作为错误页面。Spring Boot为错误页面提供了以下属性:
timestamp:错误发生时间;
status:HTTP状态吗;
error:错误原因;
exception:异常的类名;
message:异常消息(如果这个错误是由异常引起的);
errors:BindingResult异常里的各种错误(如果这个错误是由异常引起的);
trace:异常跟踪信息(如果这个错误是由异常引起的);
path:错误发生时请求的URL路径。
【例5-5】,创建基于Thymeleaf模板引擎的Spring Boot Web应用ch5_3。
2.@ExceptionHandler注解
使用自定义error页面并没有真正处理异常,在本节我们可以使用@ExceptionHandler注解处理异常。
如果在Controller中有一个使用@ExceptionHandler注解修饰的方法,那么当Controller的任何方法抛出异常时,都由该方法处理异常。
【例5-9】使用@ExceptionHandler注解处理异常。
3.@ControllerAdvice注解
ControllerAdvice注解,顾名思义,是一个增强的Controller。使用该Controller,可以实现三个方面的功能:全局异常处理、全局数据绑定以及全局数据预处理
使用@ControllerAdvice注解的类是当前Spring Boot应用中所有类的统一异常处理类,该类中使用@ExceptionHandler注解的方法用来统一处理异常,不需要在每个Controller中逐一定义异常处理方法,这是因为对所有注解了@RequestMapping的控制器方法有效。
【例5-10】使用@ControllerAdvice注解进行全局异常处理。
自定义异常处理方法
为了更好的理清逻辑,请按照下面五个步骤来完成。其中第3步,现实中的程序代码常常是弹出一个提示框或伴随数据库操作的回退。
