精通SpringBoot——工具类封装使用@ControllerAdvice实现全局统一异常拦截

前言

1. @ControllerAdvice详解
ControllerAdvice拆分开来就是Controller Advice,关于Advice,在Spring Aop中,其是用于封装一个切面所有属性的,包括切入点和需要织入的切面逻辑。这里ContrllerAdvice可以理解成是用于对Controller做的一个切面,而具体的业务织入方式则是通过结合其他的注解来实现的。

@ControllerAdvice注解将作用在所有注解了@RequestMapping的控制器的方法上
注解了@Controller的类的方法可以使用@ExceptionHandler、@InitBinder、@ModelAttribute注解到方法上。

@ControllerAdvice是在类上声明的注解,其用法主要有三点:

  • 结合方法型注解@ExceptionHandler,用于捕获Controller中抛出的指定类型的异常,从而达到不同类型的异常区别处理的目的;

  • 结合方法型注解@InitBinder,用于request中自定义参数解析方式进行注册,从而达到自定义指定格式参数的目的;

  • 结合方法型注解@ModelAttribute,表示其标注的方法将会在目标Controller方法执行之前执行。

在这里主要分析异常拦截如何处理,首先要明确为什么使用异常拦截?如果没有异常拦截,我们需要写很多try catch finally,这样非业务逻辑的代码就会和业务逻辑代码高度耦合,并且会有很多冗余的代码,所以spring 就有了aop的思想来解决这类问题。
在springBoot中,主要用到注解的方式来处理

  • @ExceptionHandler:自定义统一处理某一类异常,从而能够减少代码重复率和复杂度
  • @ControllerAdvice:异常统一拦截处理,更好的使业务逻辑与异常处理剥离开

1 自定义异常处理

1.1 定义异常接口

public interface CommonError {
   
    public int getErrorCode();
    public String getErrMsg();
    public CommonError setErrMsg(String errMsg);
}

1.2 自定义异常类型

public enum EmBusinessError implements CommonError {
   

    //通用错误类型10000开头
    PARAMETER_VALIDATION_ERROR(10001,"参数不合法"),
    UNKNOWN_ERROR(10002,"未知错误"),

    //20000表示用户信息相关错误
    USER_NOT_EXIST(20001,"用户不存在"),
    USR_LOGIN_FAIL(20002,"用户名或密码错误"),
    USR_UNLOGIN(20003,"用户未登录"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诗琪小姐姐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值