全局异常的定义和使用

全局异常
  • 先定义一个异常类
@Data
@AllArgsConstructor
public class GlobalException extends RuntimeException{
    private RespBeanEnum respBeanEnum;
}
注:此处使用@AllArgsConstructor初始化一个全参构造器
  • 定义一个异常处理器
@RestControllerAdvice
public class GlobalExceptionHandler {
    //处理所有的异常
    @ExceptionHandler(Exception.class)
    public RespBean ExceptionHandler(Exception e) {
        //如果是全局异常,正常处理
        if (e instanceof GlobalException) {
            GlobalException ex = (GlobalException) e;
            return RespBean.error(ex.getRespBeanEnum());
        } else if (e instanceof BindException) {//绑定异常
            //如果是绑定异常  :
            // 由于我们自定义的注解只会在控制台打印错误信息,想让该信息传给前端。
            //需要获取改异常BindException,进行打印
            BindException ex = (BindException) e;
            RespBean respBean = RespBean.error(RespBeanEnum.BING_ERROR);
            respBean.setMessage("参数校验异常~:" + ex.getBindingResult().getAllErrors().get(0).getDefaultMessage());
            return respBean;
        }
        return RespBean.error(RespBeanEnum.ERROR);
    }
}
拓展:上面的绑定异常可以在Vo实体中应用,当下面的属性的校验未通过时,会抛出绑定异常
@Data
public class LoginVo {
    // 自定义校验器约束
    @NotNull
    @IsMobile
    private String mobile;
    @NotNull
    @Length(min = 32)
    private String password;
}
  • 使用
        //示例
		//查询DB,用户是否存在
        User user = userMapper.selectById(mobile);
        if (null == user) {
            throw new GlobalException(RespBeanEnum.LOGIN_ERROR)
        }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
全局结构体定义使用是一种在程序中定义使用全局的自定义数据类型的方式。结构体是一种可以包含不同类型数据成员的数据结构,它允许我们将多个相关的数据项组合在一起。 要定义一个全局结构体,可以在函数外部或文件的顶部使用关键字 `struct` 来定义结构体类型,并在结构体内部定义各个数据成员。例如: ```c struct Person { char name[50]; int age; }; ``` 上面的代码定义了一个名为 `Person` 的结构体,它包含两个数据成员:一个 `name` 字符数组和一个 `age` 整数。 要使用全局结构体,可以在程序的任何地方声明结构体变量,并为其成员赋值。例如: ```c #include <stdio.h> struct Person { char name[50]; int age; }; struct Person person1; // 声明一个全局结构体变量 int main() { // 对结构体变量进行赋值 strcpy(person1.name, "John"); person1.age = 25; // 输出结构体变量的值 printf("Name: %s\n", person1.name); printf("Age: %d\n", person1.age); return 0; } ``` 上面的代码中,我们在 `main` 函数外部定义了一个名为 `person1` 的全局结构体变量,并在 `main` 函数内部给它的成员赋值。然后,我们通过 `printf` 函数输出结构体变量的值。 需要注意的是,全局结构体变量可以在程序的任何地方访问,但是在访问之前必须先进行声明或定义。此外,全局结构体变量的作用域是整个程序,可以被多个函数共享。 希望这能帮到你!如果你还有其他问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值