首页 > 其他分享 >springboot统一处理异常

springboot统一处理异常

时间:2023-01-20 14:55:05浏览次数:36  
标签:springboot errObj class import ErrorObj 异常 public BizException 统一

增加业务异常处理类:

package com.example.demo.config;

import lombok.Data;

@Data
public class BizException  extends RuntimeException{
    protected Integer errorCode;
    protected String errorMsg;

    public BizException(){

    }

    public BizException(Integer errorCode, String errorMsg) {
        this.errorCode = errorCode;
        this.errorMsg = errorMsg;
    }
}

 

设置异常handler:

package com.example.demo.config;

import lombok.Data;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

@Data
class ErrorObj<T>{
    //是否成功
    private Boolean success;
    //状态码
    private Integer code;
    //提示信息
    private String msg;
    //数据
    private T data;
}
@ControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(value =Exception.class)
    @ResponseBody
    public ErrorObj exceptionHandler(Exception e){
        System.out.println("发生了一个运行时异常"+e);

        ErrorObj errObj = new ErrorObj();
        errObj.setSuccess(false);
        errObj.setCode(1);
        errObj.setMsg(e.getMessage());
        errObj.setData("");
        return errObj;
    }

    @ExceptionHandler(value =BizException.class)
    @ResponseBody
    public ErrorObj bizexceptionHandler(BizException e){
        System.out.println("发生了一个业务异常"+e);

        ErrorObj errObj = new ErrorObj();
        errObj.setSuccess(false);
        errObj.setCode(e.getErrorCode());
        errObj.setMsg(e.getErrorMsg());
        errObj.setData("");
        return errObj;
    }
}

  

测试:

    @RequestMapping("/hello")
    public void hello() throws BizException {
        throw new BizException(1, "我抛出了一个错误");
    }
    @RequestMapping("/zeroException")
    public Integer zeroException(){
        return 100/0;
    }

 

执行结果:

{"success":false,"code":1,"msg":"/ by zero","data":""}
{"success":false,"code":1,"msg":"我抛出了一个错误","data":""}

 

命令行输出:

 

标签:springboot,errObj,class,import,ErrorObj,异常,public,BizException,统一
From: https://www.cnblogs.com/xuxiaobo/p/17062755.html

相关文章

  • 42-Springboot整合HignLevelClient----构建复杂检索
    @Test voidsearchTest()throwsIOException{ SearchRequestsearchRequest=newSearchRequest(); //1、指定索引 searchRequest.indices("bank"); //2.1、......
  • SpringMVC异常处理
    简介系统中异常包括:编译时异常和运行时异常RuntimeException;编译异常就是检查异常,需要捕获;运行时异常可以捕获也可以不捕获。 异常处理思路在springmvc中,异常处理的......
  • 基于springboot的景区旅游信息管理系统(源代码+数据库)
    基于springboot的景区旅游信息管理系统(源代码+数据库)一、系统介绍本项目分为管理员与普通用户两种角色用户登录前台功能:旅游路线、旅游景点、旅游酒店、旅游车票、......
  • springboot整合minio
    代码参考GitHub地址安装minio1、进入官网:https://min.io/我目前安装的是版本是:在cmd窗口中,命令行进行minio.exe所在的文件夹,输入如下命令server后面的地址是你......
  • 41-Springboot整合HignLevelClient----给es中保存数据
    1、导入依赖 <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.4.2</v......
  • SpringBoot2(一)SpringBoot入门程序
    SpringBoot2(一)SpringBoot入门程序在整合SSM框架时,需要大量的配置文件,SpringBoot可以简化这些配置,提高开发效率。并且Spring内置了Tomcat、Jetty、Undertow容器。搭建Spri......
  • 61、全文检索--Springboot整合HignLevelClient
    注意:它默认帮我们导入的elasticsearch版本不是我们使用的7.4.2,因为我们的Springboot项目一致维护了elasticsearch的版本通过以下方式在我们的项目中自己指定版本......
  • 230119_50_SpringBoot入门
    多环境配置文件指定方式一:properites文件文件名可以是application-{profile}.properties/yml,用来指定多个环境版本:server.port=8081//testserver.port=80......
  • springboot上传下载文件原来这么丝滑
    我使用了hutool的 FileUtil,IdUtil,所以需要引入hutool:<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactI......
  • SpringBoot @Target、@Retention、@Documented注解简介
    jdk1.5起开始提供了4个元注解:@Target、@Retention、@Documented、@Inherited。何谓元注解?就是注解的注解。在程序开发中,有时候我们需要自定义一个注解,这个自定义注解类就......