SpringBoot中如何进行统一异常处理

网友投稿 572 2022-11-02

SpringBoot中如何进行统一异常处理

SpringBoot中如何进行统一异常处理

目录1、处理前2、进行系统异常全局处理3、进行自定义异常处理总结

如何在SpringBoot项目里进行统一异常处理 需要了解的知识

@ControllerAdvice的作用

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

*/

@ControllerAdvice

public 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) {

suhttp://per(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());

}

需要手动 try catch 一下

效果

swagger和系统异常处理一样

不过后台输出不一样

总结

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:jsonapi 是 Django 框架中连接数据交换格式(JSON)API 的开发包
下一篇:tpframe- 专业快速开发 api 接口、wap 站、微信站、pc 站的框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~