如何在SpringBoot项目里进行统一异常处理

 更新时间:2022年07月28日 09:11:07   作者:​ 可爱发  ​  
这篇文章主要介绍了如何在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自动装配的源码与流程图

    springboot自动装配的源码与流程图

    在日常的开发过程中Spring Boot自动装配的特性给我们开发减少了很多重复性的工作,这篇文章主要给大家介绍了关于springboot自动装配的相关资料,需要的朋友可以参考下
    2021-08-08
  • 如何查看Linux上正在运行的所有Java程序列表

    如何查看Linux上正在运行的所有Java程序列表

    在linux操作时,经常要查看运行的项目的进程和端口,下面这篇文章主要给大家介绍了关于如何查看Linux上正在运行的所有Java程序列表的相关资料,需要的朋友可以参考下
    2023-10-10
  • SpringBoot集成MyBatisPlus+MySQL的实现

    SpringBoot集成MyBatisPlus+MySQL的实现

    MybatisPlus是国产的第三方插件, 它封装了许多常用的CURDapi,免去了我们写mapper.xml的重复劳动,本文主要介绍了SpringBoot集成MyBatisPlus+MySQL的实现,感兴趣的可以了解一下
    2023-10-10
  • Java动态代理四种实现方式详解

    Java动态代理四种实现方式详解

    这篇文章主要介绍了Java四种动态代理实现方式,对于开始学习java动态代理或者要复习java动态代理的朋友来讲很有参考价值,有感兴趣的朋友可以参考一下
    2021-04-04
  • Java集合的总体框架相关知识总结

    Java集合的总体框架相关知识总结

    今天带大家学习Java集合框架的相关知识,文中有非常详细的图文介绍,对正在学习Java的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • java实习--每天打卡十道面试题!

    java实习--每天打卡十道面试题!

    临近秋招,备战暑期实习,祝大家每天进步亿点点!本篇文章准备了十道java的常用面试题,希望能够给大家提供帮助,最后祝大家面试成功,进入自己心仪的大厂
    2021-07-07
  • 浅析SpringBoot中常见的底层注解

    浅析SpringBoot中常见的底层注解

    Spring Boot 是一个用于创建独立的、基于Spring框架的Java应用程序的框架,它提供了许多注解,下面小编就来和大家介绍一些常见的底层注解吧
    2023-08-08
  • JavaWeb详细讲述Cookie和Session的概念

    JavaWeb详细讲述Cookie和Session的概念

    web开发阶段我们主要是浏览器和服务器之间来进行交互。浏览器和服务器之间的交互就像人和人之间进行交流一样,但是对于机器来说,在一次请求之间只是会携带着本次请求的数据的,但是可能多次请求之间是会有联系的,所以提供了会话机制
    2022-06-06
  • Java深入讲解AWT实现事件处理流程

    Java深入讲解AWT实现事件处理流程

    AWT的事件处理是一种委派式事件处理方式:普通组件(事件源)将整个事件处理委托给特定的对象(事件监听器);当该事件源发生指定的事件时,就通知所委托的事件监听器,由事件监听器来处理这个事件
    2022-04-04
  • IntelliJ IDEA 安装及初次使用图文教程(2020.3.2社区版)

    IntelliJ IDEA 安装及初次使用图文教程(2020.3.2社区版)

    这篇文章主要介绍了IntelliJ IDEA 安装及初次使用(2020.3.2社区版),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03

最新评论