"Spring Boot 全局异常处理整理" 在Spring Boot应用中,全局异常处理是一项关键功能,它确保了当系统出现异常时,能够提供一致且友好的反馈给客户端。本文将探讨Spring Boot的默认异常处理机制以及如何自定义这些处理方式。 首先,Spring Boot提供了一套默认的异常处理机制。对于浏览器客户端,如果请求的URL不存在或者服务器在处理请求时抛出异常,Spring Boot会返回一个名为"Whitelabel Error Page"的HTML页面,这是针对浏览器请求(通常请求头中的Accept字段为"text/html")的默认响应。另一方面,对于非浏览器客户端,如Postman,Spring Boot会返回一个JSON格式的错误信息,包含错误代码、消息等。 这个默认行为基于`/error`请求路径,该路径由`BasicErrorController`处理。控制器会检查请求头中的`Accept`字段,如果它是"text/html",则返回HTML视图,否则返回JSON数据。在`BasicErrorController`的源代码中可以看到这种逻辑。 为了自定义Spring Boot的错误处理,我们可以采取以下步骤: 1. 替换默认错误页面:最简单的方法是在`src/main/resources/templates`目录下创建一个名为`error.html`的文件。这将覆盖默认的"Whitelabel Error Page"。例如,如果你使用Thymeleaf模板引擎,你可以编写自定义的HTML代码来设计错误页面。当发生错误时,这个页面会被显示给用户。 2. 根据状态码返回不同视图:如果你希望根据HTTP状态码返回不同的错误页面,例如404页和500页,有两种方式实现。一种是创建多个静态HTML文件,分别对应不同状态码,然后在Spring Boot配置中指定它们。另一种方法是利用`@ControllerAdvice`注解来创建一个全局异常处理器,通过`@ExceptionHandler`注解来捕获特定类型的异常并返回相应的视图。 ```java @ControllerAdvice public class CustomGlobalExceptionHandler { @ExceptionHandler(value = {ResourceNotFoundException.class}) public ModelAndView handleResourceNotFoundException() { ModelAndView modelAndView = new ModelAndView("404"); modelAndView.addObject("message", "资源未找到"); return modelAndView; } @ExceptionHandler(value = {Exception.class}) public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) { ModelAndView modelAndView = new ModelAndView("500"); modelAndView.addObject("exception", e); modelAndView.addObject("url", req.getRequestURL()); return modelAndView; } } ``` 在上面的代码中,`CustomGlobalExceptionHandler`类捕获`ResourceNotFoundException`异常并返回404视图,而所有其他未处理的异常则返回500视图。`ModelAndView`对象用于传递额外的信息,如错误消息或异常实例,到视图中。 通过以上方式,开发者可以有效地管理和定制Spring Boot应用的全局异常处理,提供更加人性化和符合业务需求的错误反馈。这不仅提高了用户体验,也使得系统的错误处理更加规范和统一。
![](https://csdnimg.cn/release/download_crawler_static/88558862/bg4.jpg)
剩余15页未读,继续阅读
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/7386ab88f5ce450e8817b9541ae085eb_caryxp.jpg!1)
- 粉丝: 1926
- 资源: 4032
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 中国微型数字传声器:技术革新与市场前景
- 智能安防:基于Hi3515的嵌入式云台控制系统设计
- 手机电量低时辐射真增千倍?解析手机使用谣言
- 56F803型DSP驱动的高精度大功率超声波电源控制策略研究
- ARM与GPRS结合的远程监测系统设计
- GPS与RFID技术结合的智能巡检系统设计
- CPLD驱动的低功耗爆炸场温度测试系统设计
- 基于FPGA的智能驱动控制系统:可扩展设计与工业网络协议
- 基于ATmega128和CH374的嵌入式USB接口设计
- 基于AT89C52的温度补偿超声波测距仪:高精度设计与应用
- MSP430F448单片机在交流数字电压表中的应用
- 提升变频器应用效率的12项实用技巧
- STM32F103在数字电镀电源并联均流系统中的应用
- PSpice仿真下的升压开关电源设计:拓扑分析与CCM稳定性提升
- 轻巧高效:MSP430主导的低成本无线传感器网络节点设计
- FPGA在EDA/PLD中实现LVDS接口的应用解析
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)