SpringBoot实现统一异常处理

文章介绍了在SpringBoot中如何使用@ControllerAdvice和@ExceptionHandler进行全局异常处理。@ControllerAdvice注解用于定义一个类来处理多个控制器中的异常,而@ExceptionHandler则用来指定处理特定类型的异常。示例代码展示了如何处理Exception和自定义SystemException,并返回相应的错误信息。
摘要由CSDN通过智能技术生成

实现介绍

SpringBoot中@ControllerAdvice与@ExceptionHandler的配合使用,可以实现controller层的异常处理功能

实现代码

@Slf4j
@ControllerAdvice
public class GlobalExceptionHandler {

    @ResponseBody
    @ExceptionHandler(Exception.class)
    public Result exception(Exception e){
        log.error(e.getMessage());
        e.printStackTrace();
        return Result.error().code(ResultCode.INTERNAL_ERROR.getCode()).message(ResultCode.INTERNAL_ERROR.getMessage());
    }

    @ResponseBody
    @ExceptionHandler(SystemException.class)
    public Result systemException(SystemException e){
        log.error(e.getMessage());
        e.printStackTrace();
        return Result.error().code(e.getCode()).message(e.getMessage());
    }
}

注解解释

@ExceptionHandler

@ExceptionHandler可以捕获到controller中指定的异常并进行处理

  • 写在普通的controller中:只能识别并处理该controller中的指定异常

  • 写在@ControllerAdvice注解的类中:可以识别并处理所有@ControllerAdvice覆盖的controller(默认是覆盖所有)中的指定异常

@ControllerAdvice

@ControllerAdvice默认是覆盖所有controller,但也可以通过设置只覆盖指定的controller

  • 只想让@ControllerAdvice覆盖指定的包
@ControllerAdvice("com.wq.property")
  • 只想让@ControllerAdvice覆盖指定的controller类
@ControllerAdvice(basePackageClasses = ArchivesOwnerInfoImportController.class)
  • 想让@ControllerAdvice覆盖指定的几个controller类
@ControllerAdvice(assignableTypes ={ArchivesOwnerInfoImportController.class, ArchivesOwnerInfoSummaryController.class})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值