springBoot实现全局异常捕获

在系统的开发项目中,spring异常类型很多,加上我们系统也要有自己的业务异常等等,如果不对异常进行处理,在前后端联调的时候,或者运行中出现错误,不易调试和处理,如今项目前后端分离,我们要对异常进行统一处理,在springBoot中提供一个注解@RestControllerAdvice用来标注类做全局异常处理,使用@ExceptionHandler(异常类型)捕获需要处理的异常,定义一个异常类返回,用于出异常进行统一异常返回。

一、实现步骤

  • 定义异常统一返回类
  • 定义全局异常处理类
  • 定义需要处理异常类型,如各种业务异常、权限异常等

1、定义统一异常返回类如图所示

2、这里就定义一个业务异常类,还可以定义其他相关异常

3、定义全局异常处理类@RestControllerAdvice用来标注类做全局异常处理,使用@Exception

Handler(异常类型)捕获需要处理的异常,如图所示

4、进行编写对应的controller进行验证

因为咱们这边捕获一个总异常和一个业务异常,如果程序中找不到对应的异常就,就会找总异常,向上查找

5、进行测试

异常处理前

下面我们处理后的:

访问业务异常,按照我们定义异常统一返回的格式,如图所示:

访问其他异常,按照我们定义异常统一返回的格式,如图所示: 

通过对异常统一处理,我们就很直接的知道异常信息等。

二、总结

以上就是实现实现全局异常统一处理步骤,在实际开发的项目中我们必须要对异常进行统一处理,而且可以定义很多异常的类型,如业务异常、系统权限异常、日志异常等等,以上就是实现全局异常的步骤,有不对的地方,欢迎大家指导交流。

Spring Boot 中,可以通过自定义全局异常处理器来捕获和处理应用程序中的异常。以下是一种常见的实现方式: 首先,创建一个全局异常处理器类,例如 `GlobalExceptionHandler`,并使用 `@ControllerAdvice` 注解将其标记为全局异常处理器。在类中可以定义多个方法来处理不同类型的异常。 ```java @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) public ResponseEntity<String> handleException(Exception ex) { // 处理异常逻辑 return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Internal Server Error"); } @ExceptionHandler(MyCustomException.class) public ResponseEntity<String> handleMyCustomException(MyCustomException ex) { // 处理自定义异常逻辑 return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(ex.getMessage()); } // 其他异常处理方法... } ``` 在以上代码中,`@ExceptionHandler` 注解用于指定每个方法要处理的异常类型。在方法中,你可以根据具体需求编写异常处理逻辑,并返回合适的响应。 需要注意的是,全局异常处理器类需要被扫描到,可以通过将其所在的包作为扫描路径配置到 Spring Boot 的配置文件中,或者使用 `@ComponentScan` 注解进行手动配置。 另外,还可以通过实现 `ErrorController` 接口来处理 Spring Boot 应用程序中无法被 `GlobalExceptionHandler` 捕获的错误。 这样,当应用程序中发生异常时,全局异常处理器会捕获并处理它们,返回相应的错误信息给客户端。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值