千家信息网

SpringBoot怎么进行统一异常处理

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要介绍"SpringBoot怎么进行统一异常处理"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"SpringBoot怎么进行统一异常处理"文章能帮助大
千家信息网最后更新 2025年01月18日SpringBoot怎么进行统一异常处理

这篇文章主要介绍"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输出结果

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

添加全局异常处理类

代码

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 */@ControllerAdvicepublic class GlobalExceptionHandler {    /**     * 系统异常处理     *     * @param e     * @return     */    @ExceptionHandler(Exception.class)    @ResponseBody    public Result error(Exception e) {        e.printStackTrace();        return Result.fail();    }}

Swagger2结果

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)@ResponseBodypublic Result divError(YyghException e) {    return Result.build(e.getCode(), e.getMessage());}

需要手动 try catch 一下

效果

swagger和系统异常处理一样

不过后台输出不一样

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

0