Springboot全局异常统一处理返回json

文章目录

            • 1. 创建一个枚举、封装异常的错误码等信息
            • 2. 创建一个自定义异常类继承RuntimeException。
            • 3. 自定义异常
            • 4. 抛出异常
            • 5. 测试

1. 创建一个枚举、封装异常的错误码等信息
package com.gblfy.distributedlimiter.enums;public enum ServiceErrCode {REQ_PARAM_ERR(10001, "您的手慢了,秒杀完毕!"),NOTFOUND_RESULT_ERR(10004, "服务器异常");private int code;private String msg;ServiceErrCode(int code, String msg) {this.code = code;this.msg = msg;}public int getCode() {return code;}public String getMsg() {return msg;}
}
2. 创建一个自定义异常类继承RuntimeException。
package com.gblfy.distributedlimiter.exception;import com.gblfy.distributedlimiter.enums.ServiceErrCode;public class BaseServiceException extends RuntimeException {private int code;public BaseServiceException(String message, ServiceErrCode serviceErrCode) {//构造器的第二个参数是上面创建的那个枚举,之后把枚举里面定义的code给了这个codesuper(message);this.code = serviceErrCode.getCode();}public int getCode() {return code;}@Overridepublic String getMessage() {return super.getMessage();}
}
3. 自定义异常
package com.gblfy.distributedlimiter.exception;import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.gblfy.distributedlimiter.exception.BaseServiceException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;import javax.annotation.Resource;/*** 标记这是一个异常处理类*/
@RestControllerAdvice
public class CustomExtHandler {@Resourceprivate ObjectMapper jsonMapper;@ExceptionHandler(BaseServiceException.class)public ObjectNode baseServiceException(BaseServiceException e){int code = e.getCode();String msg = e.getMessage();return jsonMapper.createObjectNode().put("code",code).put("msg",msg);}
}
4. 抛出异常
package com.gblfy.distributedlimiter.controller;import com.gblfy.distributedlimiter.enums.ServiceErrCode;
import com.gblfy.distributedlimiter.exception.BaseServiceException;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class SentinelLimiterController {@GetMapping("/excepton")public void exceptonHandle() {//如果超过流控管理的就抛出异常throw new BaseServiceException(ServiceErrCode.REQ_PARAM_ERR.getMsg(), ServiceErrCode.REQ_PARAM_ERR);}
}
5. 测试
https://localhost:8080/excepton

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/518785.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TableStore: 海量结构化数据分层存储方案

前言 表格存储是阿里云自研分布式存储系统,可以用来存储海量结构化、半结构化的数据。表格存储支持高性能和容量型两种实例类型。高性能使用SSD的存储介质,针对读多写多的场景都有较好的访问延时。容量型使用的是SSD和SATA混合的存储介质。对写多的场景…

Java-基本运算符

运算符 public class Demo01 {public static void main(String[] args) {// 二元运算符// Ctrl D : 复制当前行到下一行int a 10;int b 20;int c 25;int d 25;System.out.println(ab);System.out.println(a-b);System.out.println(a*b);System.out.println(a/(double)b); …

蚂蚁金服终端实验室演进之路

0. 背景 作为国民级 App,支付宝客户端需要为亿级用户提供多元化的服务,因此应用的稳定性与可靠性面临巨大的挑战,需要不断地完善和优化。 今天,让我们站在服务质量的全方位监控与优化的角度,从蚂蚁终端实验室的演进之…

2020年边缘计算最新前沿报告:如何与核心云、5G、AI协同?如何打造新业态和部署运营?...

作者 | 唐汝林、陈琪责编 | 屠敏头图 | CSDN 下载自东方 IC数据来源 | 华信咨询设计研究院有限公司在数字经济的时代浪潮中,作为关键生产要素的数字技术的快速变革已成为新常态。正当人工智能开始崭露头角时,云计算的边缘化延伸趋势又成为了另一个新焦点…

Springboot/Cloud集成Sentinel进阶实战

文章目录一、自定义限流处理1. 自定义处理类2. 请求一次测试3. 重新配置流控规则4. 重新测试5. controller二、方法限流处理2.1. 创建接口2.2. 创建接口实现类2.3. 接口调用2.4. 请求2.5. 设置流控规则一、自定义限流处理 自定义限流文档 1. 自定义处理类 package com.gblfy…

若依SQL Server开发使用教程

1. sys_menu表中的将菜单ID修改为自动ID,解决不能增加菜单的问题,操作流程如下: 解决方案如下 菜单栏->工具->选项 点击设计器,去掉阻止保存要求更新创建表的更改选项,点确认既可以保存了 2 自动生成代码找不表的解决方案…

java基础 代理

1.代理是什么? 代理(Proxy)是一种设计模式。提供了对目标对象另外的访问方式,即通过代理对象访问目标对象。 有一个类我们无法更改,但我们希望在原有类上加上我们自己的逻辑(增强),这时就可以…

使用EMR Spark Relational Cache跨集群同步数据

背景 Relational Cache是EMR Spark支持的一个重要特性,主要通过对数据进行预组织和预计算加速数据分析,提供了类似传统数据仓库物化视图的功能。除了用于提升数据处理速度,Relational Cache还可以应用于其他很多场景,本文主要介绍…

异构计算黄金时代下,超强异构计算服务器FP5468G2将会带来哪些变革?

就在几年前,计算领域还是通用计算的天下。此一时,彼一时,随着计算密集型领域的快速崛起,面对移动互联网、大数据和云计算需求的爆炸式增长,传统的单一CPU方案越来越力不从心。另一方面,半导体技术在纵向提速…

基于External-DNS的多集群Ingress DNS实践

概要 External-DNS提供了编程方式管理Kubernetes Ingress资源的DNS的功能,方便用户从Ingress管理DNS解析记录。而在kubernetes federation v2环境中,使用External-DNS可以快速的管理多个联邦集群的Ingress DNS解析,降低用户的操作成本。下面…

在执行Dockerfile时出现Get https://registry-1.docker.io/v2/错误的解决方案

文章目录1. 登录阿里云2. 找到镜像加速3. 使用阿里云镜像1. 登录阿里云 没有就注册,不要文为什么要用阿里云镜像,没办法,就是快! https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 2. 找到镜像加速 复制内容: {&qu…

Java基础--反射

1.概念 什么是反射? (1)Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。 本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取对象的各种信息…

做可交互的统计图表,这套图形语法不容错过

选好可视化 “一图胜千言”,是最直观的数据可视化魅力。以图表来传达和沟通信息,其效率远超枯燥乏味的数据表达。 有需求就有市场。数据可视化崭露头角后,各个厂商出备的产品、解决方案,开发者自研的可视化工具、操作平台都如雨…

Centos7 docker 安装 zookeeper

# 默认下载最新版本 docker pull zookeeper# 指定版本下载 docker pull zookeeper:3.5.8# 创建zk容器 docker run -di -p 2181:2181 --namezk zookeeper:3.5.8# 查看正在运行的容器 docker ps# 防火墙开放2181端口firewall-cmd --zonepublic --add-port2181/tcp --permanent# 重…

10分钟带你逆袭kafka之路

作者:故事凌 1. kafka概述 ##1.1 kafka简介 Apache Kafka 是一个快速、可扩展的、高吞吐的、可容错的分布式“发布-订阅”消息系统, 使用 Scala 与 Java 语言编写,能够将消息从一个端点传递到另一个端点,较之传统的消息中 间件…

漫谈分布式计算框架

如果问 mapreduce 和 spark 什么关系,或者说有什么共同属性,你可能会回答他们都是大数据处理引擎。如果问 spark 与 tensorflow 呢,就可能有点迷糊,这俩关注的领域不太一样啊。但是再问 spark 与 MPI 呢?这个就更远了。…

UI2CODE再进化!结合Redux的框架升级!

背景 UI2CODE的目标是通过分析视觉稿得到对应的代码,让AI提高开发效率。然而过去静态化页面的产出,不能得到业务场景的需求。针对于此,我们以UI2CODE自动化开发为基底,结合Redux的消息机制,将自动化生成的维度提升到页…

8080:The Tomcat connector configured to listen on port 8080 failed to start 的解决办法

问题再现: 控制台最后会显示Application启动失败,如下: ...*************************** APPLICATION FAILED TO START ***************************Description:The Tomcat connector configured to listen on port 8080 failed to start. …

数据库连接池的原理没你想得这么复杂

来源 | 犀牛饲养员的技术笔记封图| CSDN 下载于视觉中国背景介绍数据库连接池和线程池等池技术存在的意义都是为了解决资源的重复利用问题。在计算机里,创建一个新的资源往往开销是非常大的。而池技术可以统一分配,管理某一类资源,它允许我们…

CICD联动阿里云容器服务Kubernetes实践之Bamboo篇

本文档以构建一个 Java 软件项目并部署到 阿里云容器服务的Kubernetes集群 为例说明如何使用 Bamboo在阿里云Kubernetes服务上运行Remote Agents并在agents上运行Build Plans。 1. 源码项目 本示例中创建的GitHub源码项目地址为: https://github.com/AliyunConta…