探寻Spring Boot 07: 如何优雅地处理异常

2023-12-27 11阅读
1、 使用@ControllerAdvice注解2、 使用@ExceptionHandler注解3、 使用自定义错误页面异常是程序中不可避免的一部分。
  • 本文目录导读:
  • 1、 使用@ControllerAdvice注解
  • 2、 使用@ExceptionHandler注解
  • 3、 使用自定义错误页面

异常是程序中不可避免的一部分,它们可能会在代码执行过程中发生。如果不加以处理,异常可能会导致应用崩溃或出现其他问题。因此,在开发应用程序时,我们需要考虑如何优雅地处理异常。

探寻Spring Boot 07: 如何优雅地处理异常

Spring Boot 提供了各种机制来处理和管理异常,包括使用注解、自定义错误页面等方式。下面将详细介绍 Spring Boot 中的几种常见的异常处理方法。

1. 使用@ControllerAdvice注解

@ControllerAdvice 是一个基于 AOP 的全局异常处理器,在 Spring MVC 应用程序中非常实用。通过 @ControllerAdvice 注解可以捕获到所有 Controller 层抛出的 Exception 异常,并进行统一的封装和返回给前端。

第一创建一个类并添加 @ControllerAdvice 注解:

```

探寻Spring Boot 07: 如何优雅地处理异常

@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注解和自定义错误页面。每种方式都有其优点和缺点,具体选择哪种方法取决于你的需求以及应用程序的复杂度。

无论使用何种方式来处理异常,在开发过程中一定要注意对异常进行充分测试,并确保应用程序能够正确地捕获和处理所有可能发生的异常。只有这样才能保证应用程序运行稳定且可靠。

文章版权声明:除非注明,否则均为游侠云资讯原创文章,转载或复制请以超链接形式并注明出处。

目录[+]