springboot异常处理的三种方式

2022-10-04 08:49:25

制造异常:
在这里插入图片描述
报500错误。在大量的代码中很难找到错误
在这里插入图片描述
1.统一异常处理:
添加异常处理方法
GlobalExceptionHandler.java中添加

//指定出现什么异常执行这个方法@ExceptionHandler(Exception.class)@ResponseBody//为了返回数据publicRerror(Exception e){
        e.printStackTrace();returnR.error().message("执行了全局异常处理..");}

报错异常:在大型项目中,可对多种异常进行处理,便于找bug
在这里插入图片描述
2.特殊异常处理
定义异常,特别处理ArithmeticException异常
在这里插入图片描述

在这里插入图片描述

//特定异常处理@ExceptionHandler(ArithmeticException.class)@ResponseBody//为了返回数据publicRerror(ArithmeticException e){
        e.printStackTrace();returnR.error().message("执行了ArithmeticException异常处理");}

异常处理结果:
在这里插入图片描述
3。自定义异常处理
第一步:创建自定义处理类的实体类:

@Data@AllArgsConstructor//生成有参构造方法@NoArgsConstructor//生成无参构造方法publicclassMyExceptionextendsRuntimeException{privateInteger code;privateString msg;}

第二步:在统一异常类中添加规则:

//自定义异常处理@ExceptionHandler(MyException.class)@ResponseBody//返回数据publicRerror(MyException e){
        e.printStackTrace();returnR.error().code(e.getCode()).message(e.getMsg());//封装自定义异常信息}

第三步:执行自定义异常

try{int i=10/0;}catch(Exception e){thrownewMyException(20001,"执行自定义异常处理");}

在这里插入图片描述
以上使用的R类,用于封装json数据的格式:

@DatapublicclassR{@ApiModelProperty(value="是否成功")privateBoolean success;@ApiModelProperty(value="返回码")privateInteger code;@ApiModelProperty(value="返回消息")privateString message;@ApiModelProperty(value="返回数据")privateMap<String,Object> data=newHashMap<String,Object>();privateR(){}publicstaticRok(){R r=newR();
        r.setSuccess(true);
        r.setCode(ResultCode.SUCCESS);
        r.setMessage("成功");return r;}publicstaticRerror(){R r=newR();
        r.setSuccess(false);
        r.setCode(ResultCode.ERROR);
        r.setMessage("失败");return r;}publicRsuccess(Boolean success){this.setSuccess(success);returnthis;}publicRmessage(String message){this.setMessage(message);returnthis;}publicRcode(Integer code){this.setCode(code);returnthis;}publicRdata(String key,Object value){this.data.put(key, value);returnthis;}publicRdata(Map<String,Object> map){this.setData(map);returnthis;}}
publicinterfaceResultCode{publicstaticInteger SUCCESS=20000;publicstaticInteger ERROR=20001;}
  • 作者:sjgeng111
  • 原文链接:https://blog.csdn.net/sjgllllll/article/details/117448530
    更新时间:2022-10-04 08:49:25