这篇文章主要介绍了如何在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) {
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());
}
需要手动 try catch 一下:
效果
swagger和系统异常处理一样
不过后台输出不一样 :
到此这篇关于如何在SpringBoot项目里进行统一异常处理的文章就介绍到这了,更多相关SpringBoot异常处理内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
沃梦达教程
本文标题为:如何在SpringBoot项目里进行统一异常处理
基础教程推荐
猜你喜欢
- Java文件管理操作的知识点整理 2023-05-19
- Java实现线程插队的示例代码 2022-09-03
- Java实现查找文件和替换文件内容 2023-04-06
- ConditionalOnProperty配置swagger不生效问题及解决 2023-01-02
- springboot自定义starter方法及注解实例 2023-03-31
- JDK数组阻塞队列源码深入分析总结 2023-04-18
- java基础知识之FileInputStream流的使用 2023-08-11
- java实现多人聊天系统 2023-05-19
- Java数据结构之对象比较详解 2023-03-07
- Java并发编程进阶之线程控制篇 2023-03-07