超详细-SpringBoot统一异常处理解决思路

本文详述了SpringBoot中实现统一异常处理的步骤,包括使用@ControllerAdvice进行全局异常处理,定义异常类型枚举,创建自定义异常,设计统一响应数据格式,以及构建全局异常处理类。通过对@ControllerAdvice的讲解,说明如何捕获并处理Controller层的所有异常,同时介绍了自定义异常和全局异常处理类的设计思想。
摘要由CSDN通过智能技术生成

SpringBoot统一异常处理解决思路

对于一个完美的项目,异常处理是必不可少的。SpringBoot的统一异常处理,可以让项目出现的绝大多数异常都在你的把控之类。废话不多说,直接上干货。

首先先知道一下SpringBoot统一异常处理四剑客(四模板),1. 异常类型枚举类,2.自定义异常,3.统一信息返回类,4.全局异常处理类。现在不懂没关系,后面会讲。

在这里插入图片描述

第一个干货 @ControllerAdvice注解

@ControllerAdvice注解有三个用途,全局异常处理,全局数据绑定,全局数据预处理。因为本篇文章是讲统一异常处理的,所以我们这里只讲其全局异常处理的用法。

那么@ControllerAdvice有什么用呢?所以Controller抛出来的异常都能由被@ControllerAdvice注解的类来进行异常处理。当然还要结合@ExceptionHandler注解。上代码!

这里我们先不要关注R是什么,后面会将。@ControllerAdvice类注解注解标明这个类被用来处理Controller抛出来的所有异常。@ExceptionHandler方法加异常类的字节码对象参数标明该方法用来处理的异常类型。比如RRExceptionHandle方法用来处理RRException(自定义异常,后面会讲)这个异常及其子类,而如果Contrller抛出NullPointException异常则不会由RRExceptionHandle这个方法来处理。

/**
 * controller 统一异常处理
 */
@ControllerAdvice
public class CommonExceptionHandle {
   

    @ResponseBody
    @ExceptionHandler(RRException.class)
    public R RRExceptionHandle(RRException exception){
   
        return R.error(exception.getCode(),exception.getMsg());
    }

    @ResponseBody
    @ExceptionHandler(RuntimeException.class)
    public R RuntimeExceptionHandle(RuntimeException runtimeException){
   
        return R.error(500,runtimeException.getMessage());
    }
}

异常类型枚举类

异常枚举类,通过设置枚举类型和自定义异常结合起来,可以很方便的定义各种类型的异常。(@Getterd得装lombok插件才能使用)

@Getter
public enum ExceptionEnum {
   
    ADMINISTRATOR_UPDATE_FAILED(5000,"管理员更新错误"),
    ADMINISTRATOR_SAVE_FAILED(5001,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值