探寻Spring Boot 07: 如何优雅地处理异常
- 本文目录导读:
- 1、 使用@ControllerAdvice注解
- 2、 使用@ExceptionHandler注解
- 3、 使用自定义错误页面
异常是程序中不可避免的一部分,它们可能会在代码执行过程中发生。如果不加以处理,异常可能会导致应用崩溃或出现其他问题。因此,在开发应用程序时,我们需要考虑如何优雅地处理异常。
Spring Boot 提供了各种机制来处理和管理异常,包括使用注解、自定义错误页面等方式。下面将详细介绍 Spring Boot 中的几种常见的异常处理方法。
1. 使用@ControllerAdvice注解
@ControllerAdvice 是一个基于 AOP 的全局异常处理器,在 Spring MVC 应用程序中非常实用。通过 @ControllerAdvice 注解可以捕获到所有 Controller 层抛出的 Exception 异常,并进行统一的封装和返回给前端。
第一创建一个类并添加 @ControllerAdvice 注解:
```
@ControllerAdvice
public class GlobalExceptionHandler {
// 处理 RuntimeException 异常
@ExceptionHandler(RuntimeException.class)
public ResponseEntity handleRuntimeException(RuntimeException e) {
return new ResponseEntity("运行时错误:" + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
在上述示例代码中,handleRuntimeException 方法接收一个 RuntimeException 参数,并将其信息封装成 ResponseEntity 对象并返回给前端。
2. 使用@ExceptionHandler注解
除了使用 @ControllerAdvice 注解外,还可以在 Controller 层添加 @ExceptionHandler 注解来对特定类型的 Exception 进行处理。这种方式对于单个 Controller 的异常处理非常方便。
例如:
@RestController
public class UserController {
在上述示例代码中,handleRuntimeException 方法与之前的一样,但是它只会捕获当前 Controller 中抛出的 RuntimeException 异常。
3. 使用自定义错误页面
Spring Boot 还支持自定义错误页面来显示应用程序发生的异常信息。当应用程序抛出异常时,可以将用户重定向到一个特定的错误页面,并显示相应信息。
第一创建一个 error.html 页面并添加以下内容:
Error Page在上述示例代码中,我们使用了 Thymeleaf 模板引擎来渲染 HTML 页面,并通过 ${errorMessage} 来动态地展示具体的异常信息。
然后,在 Spring Boot 应用程序配置文件(application.yml 或 application.properties)中添加以下属性:
server.error.path=/error
spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=false
# 配置 Whitelabel Error Page 关闭
server.error.whitelabel.enabled=false
最后,在 Controller 层中抛出异常并测试:
@GetMapping("/user")
public String getUser() {
throw new RuntimeException("获取用户信息失败");
当访问 /user 接口时,应用程序将会抛出一个 RuntimeException 异常,并重定向到我们之前定义的 error.html 页面。
在本文中,我们介绍了 Spring Boot 中三种不同的异常处理方式:使用@ControllerAdvice 注解、使用@ExceptionHandler注解和自定义错误页面。每种方式都有其优点和缺点,具体选择哪种方法取决于你的需求以及应用程序的复杂度。
无论使用何种方式来处理异常,在开发过程中一定要注意对异常进行充分测试,并确保应用程序能够正确地捕获和处理所有可能发生的异常。只有这样才能保证应用程序运行稳定且可靠。