全局异常实现及抛出自定义异常错误提示_丢出自定义异常,提示出错信息-程序员宅基地

技术标签: java  后端  

  1. 自定义GlobalException
public class GlobalException extends RuntimeException{

    private String message;

    private String code;

    /**
     * 默认构造方法,根据异常信息 构建一个异常实例对象
     * @param message 异常信息
     */
    public GlobalException(String message) {
        super(message);
        this.message = message;
    }

    /**
     * 根据异常信息、响应状态码构建 一个异常实例对象
     * @param message 异常信息
     * @param code 响应状态码
     */
    public GlobalException(String message, String code) {
        super(message);
        this.message = message;
        this.code = code;
    }

    /**
     * 根据异常信息,异常对象构建 一个异常实例对象
     * @param message 异常信息
     * @param e 异常对象
     */
    public GlobalException(String message, Throwable e) {
        super(message, e);
        this.message = message;
    }

    /**
     * 根据异常信息,响应状态码,异常对象构建 一个异常实例对象
     * @param message 异常信息
     * @param code 响应状态码
     * @param e 异常对象
     */
    public GlobalException(String message, String code, Throwable e) {
        super(message, e);
        this.message = message;
        this.code = code;
    }
	
	/**
	*CodeEnum为自定义错误信息枚举
	*/
    public GlobalException(CodeEnum codeEnum){
        super(codeEnum.getMsg());
        this.message = codeEnum.getMsg();
        this.code = codeEnum.getCode();
    }

    @Override
    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }
}
  1. 自定义GlobalExceptionHandler
@RestControllerAdvice
public class GlobalExceptionHandler {

    private Logger logger = LoggerFactory.getLogger(getClass());

    /**
     * 处理 Exception 异常
     * @param e 异常
     * @return 处理结果
     */
    @ExceptionHandler(Exception.class)
    public Response handlerException(Exception e) {
        logger.error(e.getMessage(), e);
        return Response.error("系统异常");
    }

    /**
     * 处理空指针异常
     * @param e 异常
     * @return 处理结果
     */
    @ExceptionHandler(NullPointerException.class)
    public Response handlerNullPointerException(NullPointerException e) {
        logger.error(e.getMessage(), e);
        return Response.error("空指针异常");
    }

    /**
     * 处理自定义异常
     * @param globalException 异常
     * @return 处理结果
     */
    @ExceptionHandler(GlobalException.class)
    public Response handlerGlobalException(GlobalException globalException) {
        logger.error(globalException.getMessage(), globalException.getCode(),globalException);
        return Response.error(globalException.getCode(),globalException.getMessage());
    }
}
  1. 抛出自定义异常
    在这里插入图片描述
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_46291214/article/details/121995991

智能推荐

利用Docker建立服务器和docker容器的监视系统-程序员宅基地

文章浏览阅读112次。为什么80%的码农都做不了架构师?>>> ...

Linux进程间通信——有名管道 FIFO 详解_有名管道的fifo怎么理解-程序员宅基地

文章浏览阅读788次,点赞3次,收藏2次。详细介绍了FIFO相关的关键概念、FIFO的创建、FIFO的打开规则、FIFO的读写规则,并对打开规则及读写规则进行了实例程序验证。_有名管道的fifo怎么理解

MyBatis中resultType和resultMap的区别-程序员宅基地

文章浏览阅读664次,点赞2次,收藏15次。[size=medium][align=left]MyBatis中关于resultType和resultMap的区别共同:MyBatis中在查询进行select映射的时候,返回类型为resultType、resultMap区别:1.resultType是直接表示返回类型的(对应着我们的model对象中的实体)2.resultMap则是对外部ResultMap的引用(提前定义..._mabaits resulttype实体类中5个字段

lol战绩查询接口_如何在LOL中正确的抓出内鬼-程序员宅基地

文章浏览阅读6.1k次。原本假期计划是打两个星期游戏再随便折腾点好玩的.但可惜,假期余额不断充值到账,游戏也给我打腻了.于是顺着游戏里小伙伴的撕逼开始了抓内鬼之旅,让?来看看到底是谁让我上不了王者:D.爬数据最初打算是使用wegame的查询召唤师接口,但是没找到web端且只记录半年的数据,不方便抓包(懒得用wireshark分析).然后去翻翻有没有现成的轮子,看到掌盟上已经有人做过类似的工作,还真有.https..._lol战绩接口

platform基础介绍_platform详解-程序员宅基地

文章浏览阅读4.2k次,点赞5次,收藏23次。(1)什么是platformpaltform是一种虚拟的总线,用于管理外设资源内存资源中断资源。在硬件上有USB-BUS总线,PCI-BUS总线,这是在物理设备上实际存在的总线。USB-BUS管理USB设备,PCI总线管理PCI设备。但是在实际中,一些设备不属于这些总线,一些SOC上面的控制器或者设备。使用platform统一管理这些设备。platform的一个优点就是将驱..._platform详解

【计算机算法】回溯——子集和问题、旅行商问题_旅行商问题测试数据-程序员宅基地

文章浏览阅读319次。求集合中满足一个值的子集和测试数据:43113 24 11 7结果:{13,11,7}{24,7}#include<iostream>using namespace std;int *x,*y;int size,sum;void output(){ int count = 0;//计算子集中的个数,这个只是用来控制是否输出逗号的情况 int tempsum = 0; for(int i = 1;i <= size;i++){ if(y[i] !_旅行商问题测试数据

随便推点

Python猜数字游戏(包含异常处理,可自定义随机数产生范围、最大猜测次数,如果用户猜错的话可根据输入情况缩小猜测范围)_python猜随机数大小,根据输入的值缩小范围-程序员宅基地

文章浏览阅读1.4w次,点赞39次,收藏70次。Python猜数字游戏我在最基础的python猜数字游戏基础上增加了一些细节使得用户体验更高。具体的改进方案如下:(1)异常处理,增加程序健壮性。请用异常处理改造猜数字游戏,使其输入的不是整数(如字母、浮点数等)时,不再出错终止,而是给出“输入内容必须为整数!”的提示,并让用户重新输入。(2)增加程序灵活性 。为了方便修改生成随机数的范围,将猜数字的最小值和最大值设为变量并进行统一设置。设置猜数字的最大次数,猜错后提示还有几次机会。(3)改善用户体验。当用户没猜对时,根据猜数情况缩小猜解范围,以方便_python猜随机数大小,根据输入的值缩小范围

python实现智联e学自动刷课,智联e学自动播放_python自动播放网页视频-程序员宅基地

文章浏览阅读832次,点赞12次,收藏8次。使用python实现智联e学自动刷课,智联e学自动播放_python自动播放网页视频

数据链路层简介-程序员宅基地

文章浏览阅读7.2k次,点赞12次,收藏32次。数据链路的基本概念、主要功能_数据链路层

程序员人生:技术人员的职业发展规划_程序员个人发展目标-程序员宅基地

文章浏览阅读1.1k次。以下内容转载自https://blog.csdn.net/universsky2015/article/details/108846699技术人员的职业发展规划思考之前有一篇美团公众号的文章《工作中如何做好技术积累》。近期也在给团队同学做年度绩效沟通,在沟通的时候大家也探讨了职业发展规划。有些同学表示,希望后续能进一步在技术领域(或管理方向)进一步积累;有的同学也表示,希望在新的一年,能具有更好的技术影响力,自己能做一些技术决定,去影响其他人,这样自己会很有成就感。不过,我也挑战问了一些问题:._程序员个人发展目标

pymysql体温管理项目_spark 每天测量一次体温,数据库判断-程序员宅基地

文章浏览阅读501次。体温管理项目目标1.根据页面设计系统功能。2.设计项目数据库。3.代码实现。项目介绍登记学生每天提问信息,发现并记录异常情况!1.首页: 生成每个学生的当天体温名单,按照日期查询当天体温情况2.体温状态修改页面:实现修改某人的体温状态(1:正常,2.体温异常,3.未登记)3.异常信息登记页面:根据名字修改各种信息4.某天体温记录统计:要求:完成统计功能统计:体温正常的有多少人,异常的有多少人!扩展:统计本周/7天内/某个时间段内:某人异常体温次数。项目功_spark 每天测量一次体温,数据库判断

SpringCloud-SpringBoot读取Nacos上的配置文件_springboot读取nacos配置-程序员宅基地

文章浏览阅读2.2k次,点赞22次,收藏8次。在 Spring Boot 应用程序中,可以使用 Spring Cloud Nacos 来实现从 Nacos 服务注册中心和配置中心读取配置信息。​ 注解时,需要确保属性名与配置文件中的键名一致,Spring Boot 会自动根据前缀匹配来绑定配置项。​ 注解中的 value 值指定了要绑定的配置文件的前缀,可以直接读取到该配置文件中的相关属性值。如果想要在配置发生变化时动态刷新配置,可以在需要动态更新的 Bean 类上添加。​ 来触发配置的刷新,以便及时获取最新的配置信息。​,并添加相应的键值对。_springboot读取nacos配置