温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

SpringBoot怎么进行统一异常处理

发布时间:2022-02-07 10:23:39 来源:亿速云 阅读:247 作者:iii 栏目:开发技术

这篇文章主要介绍“SpringBoot怎么进行统一异常处理”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot怎么进行统一异常处理”文章能帮助大家解决问题。

1、处理前

异常代码

/**      * 根据id获取医院设置      *      * @param id 查看的id编号      * @return      */ @ApiOperation(value = "根据id获取医院设置") @GetMapping("/findHospById/{id}") public Result findHospById(@PathVariable Long id) {     // 模拟异常(因为除数不能为0)     int a = 1 / 0;     HospitalSet hospitalSet = hospitalSetService.getById(id);     return Result.ok(hospitalSet); }

Swagger2输出结果

SpringBoot怎么进行统一异常处理

2、进行系统异常全局处理

添加全局异常处理类

SpringBoot怎么进行统一异常处理

代码

package com.fafa.yygh.common.exception; import com.fafa.yygh.common.result.Result; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; /**  * 全局异常处理  *  * @author Sire  * @version 1.0  * @date 2022-02-02 21:01  */ @ControllerAdvice public class GlobalExceptionHandler {     /**      * 系统异常处理      *      * @param e      * @return      */     @ExceptionHandler(Exception.class)     @ResponseBody     public Result error(Exception e) {         e.printStackTrace();         return Result.fail();     } }

Swagger2结果

SpringBoot怎么进行统一异常处理

3、进行自定义异常处理

开发时,往往需要我们去定义处理一些异常(这里还是那上面的那个异常来做测试)

创建自定义异常处理类

package com.fafa.yygh.common.exception; import com.fafa.yygh.common.result.ResultCodeEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /**  * 自定义全局异常类  *  * @author qy  */ @Data @ApiModel(value = "自定义全局异常类") public class YyghException extends RuntimeException {     @ApiModelProperty(value = "异常状态码")     private Integer code;     /**      * 通过状态码和错误消息创建异常对象      *      * @param message      * @param code      */     public YyghException(String message, Integer code) {         super(message);         this.code = code;     }     /**      * 接收枚举类型对象      *      * @param resultCodeEnum      */     public YyghException(ResultCodeEnum resultCodeEnum) {         super(resultCodeEnum.getMessage());         this.code = resultCodeEnum.getCode();     }     @Override     public String toString() {         return "YyghException{" +             "code=" + code +             ", message=" + this.getMessage() +             '}';     } }

将其添加到GlobalExceptionHandler

/**      * 自定义异常处理      *      * @param e      * @return      */ @ExceptionHandler(YyghException.class) @ResponseBody public Result divError(YyghException e) {     return Result.build(e.getCode(), e.getMessage()); }

SpringBoot怎么进行统一异常处理

需要手动 try catch 一下

SpringBoot怎么进行统一异常处理

效果

swagger和系统异常处理一样

不过后台输出不一样

SpringBoot怎么进行统一异常处理

关于“SpringBoot怎么进行统一异常处理”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI