统一全局异常处理

实际开发中,在前后端交互时会出现数据为空,数据异常,空指针,数据越界,登陆过期等异常。在后端给前端传值前我们需要判断是否存在这些异常,如果存在异常,我们需要捕获并打印这些异常的日志。

以下是基于登陆认证的异常处理。

@Slf4j //打印日志
@ControllerAdvice  //基于@ControllerAdvice注解的Controller层的全局异常统一处理
public class GlobalException {
    @ExceptionHandler(value = UnauthorizedException.class)
    @ResponseBody
    public Result handler(UnauthorizedException e){
        log.error("运行时异常--------------{}"+e.getMessage());
        return new Result().setCode(402).setMessage("无权限访问");
    }

    @ResponseBody
    @ExceptionHandler(value = ExpiredCredentialsException.class)
    public Result handler(ExpiredCredentialsException e){
        log.error("运行时异常--------------{}"+e.getMessage());
        return new Result().setCode(401).setMessage("登陆已过期,请重新登陆");
    }

    @ResponseBody
    @ExceptionHandler(value = UnauthenticatedException.class)
    public Result handler(UnauthenticatedException e){
        log.error("运行时异常--------------{}"+e);
        return new Result().setCode(401).setMessage("未登陆");
    }

    @ResponseBody
    @ExceptionHandler(value = UnknownAccountException.class)
    public Result handler(UnknownAccountException e) {
        log.error("运行时异常:----------------{}", e);
        return new Result().setCode(401).setMessage("未登录123");
    }

}
 

@ExceptionHandler():指定出现什么异常后要执行的方法,括号内写具体的异常类,可自定义,这里调用的是授权和认证的异常类。

@ResponseBody:为了能够返回json数据

下面是实际登陆中抛出异常的代码片段演示:

        注意:返回结果的封装是运用下列博客中的方法实现

        统一接口返回类的封装Result,超简单易懂适合新手

   try{
       subject.login(jwtToken);  //登陆方法
   }catch (UnknownAccountException unknownAccountException){  //用户名错误将捕获的异常
       return JSON.toJSONString(new Result().setCode(401).setMessage("用户名错误"));
   }catch (IncorrectCredentialsException incorrectCredentialsException){ //密码错捕获的异常
       return JSON.toJSONString(new Result().setCode(402).setMessage("密码错误"));
   }

博客仅仅通过举例的方式演示统一异常处理的运用。

实际上我们可以自定义异常类,或者捕获其他类型的异常来抛出。需要在实际运用中慢慢熟悉,欢迎大家私聊评论,提出建议互相学习

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

psvm_code

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

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

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

打赏作者

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

抵扣说明:

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

余额充值