- 内容简介
- 前言
- 第 1 章 第一个 Spring Boot 项目
- 第 2 章 集成 MySQL 数据库
- 第 3 章 集成 Spring Data JPA
- 第 4 章 使用 Thymeleaf 模板引擎
- 第 5 章 Spring Boot 事务支持
- 第 6 章 使用过滤器和监听器
- 第 7 章 集成 Redis 缓存
- 第 8 章 集成 Log4j 日志
- 8.3 使用 Log4j 记录日志
- 第 9 章 Quartz 定时器和发送 Email
- 第 10 章 集成 MyBatis
- 第 11 章 异步消息与异步调用
- 第 12 章 全局异常处理与 Retry 重试
- 第 13 章 集成 MongoDB 数据库
- 第 14 章 集成 Spring Security
- 第 15 章 Spring Boot 应用监控
- 第 16 章 集成 Dubbo 和 Zookeeper
- 第 17 章 多环境配置与部署
- 第 18 章 Spring Boot 原理解析
- 参考文献
12.2 Spring Boot 全局异常使用

12.2.1 自定义错误页面
12.1 节中,我们已经知道 Spring Boot 的错误提示页面的用户体验不好,这一节将自己实现错误提示页面。首先,在 my-spring-boot 项目目录/src/main/resources/static 下新建自定义错误页面 404.html,具体的代码如下:
错误页面的内容很简单,就是当访问路径不存在时,在页面中间显示一句话:“主人,我累了,让我休息一会!!!”。当然,在真正的项目中,该错误页面的样式会更加美观。404 错误页面开发完成之后,我们在 my-spring-boot 项目目录/src/main/java/ com.example.demo 下新建包 error,并在 error 包下新建 ErrorPageConfig 配置类,具体代码如下:
- EmbeddedServletContainerCustomizer:Spring Boot 的自动配置有一个特性就是能够通过代码来修改配置,这样可以很方便地修改配置,而我们只需要实现 Spring Boot 定义的接口即可。这里需要注册一个实现 EmbeddedServletContain erCustomizer 的 Bean,在 ErrorPageConfig 类中,我们使用匿名类来实现 Embe ddedServletContainerCustomizer 接口,同时实现该接口唯一的方法 customize,并在 customize 方法中自定义 401、404、500 等错误页面。
12.2.2 测试
404.html 错误页面和 ErrorPageConfig 类开发完成之后,重新启动 my-spring-boot 项目(项目启动之前,记得启动 Redis 缓存服务和 ActiveMQ 服务,否则项目会报错,之后不再提示),在浏览器中输入链接 http://localhost:8080/ayUser/testdddd,由于该链接不存在,因此会出现如图 12-2 所示的自定义错误页面。
图 12-2 自定义 404 错误界面
12.2.3 全局异常类开发
在项目中,我们会遇到各种各样的业务异常,业务异常是指正常的业务处理时,由于某些业务的特殊要求而导致处理不能继续而抛出异常。我们希望这些业务异常能够被统一处理,因此使用 Spring Boot 进行全局异常处理就变得很方便。首先,统一封装自定义业务异常 BusinessException,该类继承自 RuntimeException 异常类,并提供带有异常信息的构造方法,具体代码如下:
然后在 my-spring-boot 项目目录/src/main/java/com.example.demo.error 下新建错误信息类 ErrorInfo,该类用于封装错误信息,包括错误码,具体代码如下:
其次,在 my-spring-boot 项目目录/src/main/java/com.example.demo.error 下新建统一异常处理类 GlobalDefaultExceptionHandler,具体代码如下:
- @ControllerAdvice:定义统一的异常处理类,basePackages 属性用于定义扫描哪些包,默认可不设置。
- @ExceptionHandler:用来定义函数针对的异常类型,可以传入多个需要捕获的异常类。
- @ResponseBody:如果返回的为 json 数据或其他对象,就添加该注解。
最后,在 AyUserController 类下添加控制层方法 findAll,并在方法里抛出 BusinessException,该异常会被全局异常类捕获到,具体代码如下:
12.2.4 测试
代码开发完成之后,重新启动 my-spring-boot 项目,项目启动成功之后,在浏览器中输入访问地址:http://localhost:8080/ayUser/findAll,可以看到后端返回的 json 信息,具体信息如下:
{"code":200,"message":" 业务异常","url":"/ayUser/findAll", "data":null}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论