统一异常处理 | 学习笔记

简介: 快速学习 统一异常处理

开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot)统一异常处理】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/667/detail/11293


统一异常处理


内容简介:

一、手动模拟异常

二、统一异常处理

三、什么叫依赖传递


一、手动模拟异常

//创建 page 对象

Page<EduTeacher> pageTeacher = new Page<>(current, limit) :

int i = 10/0 :

打开 swagger

,点击/eduserice/teacher/pageTeacher/{current}/{limit}

current : 1

limit : 2

点击 try it out!

结果:

{

"timestamp": "2020-02-24 16:27:55",

"status": 500,

"error": "Internal Server Error",

"message": "/ by zero",

"path": "/eduservice/teacher/pageTeacher/1/2"

}


二、统一异常处理

1.创建统一异常处理器

在 service-base 中创建统一异常处理类

GlobalExceptionHandler.java:

在类上加注解@ControllerAdvice

在类中加方法:(若有异常,则会利用这个方法返回统一数据)

@ExceptionHandler (Exception.class)

@ResponseBody

public R error(Exception e) {

e. printStackTrace();

return R. error();

}

例如:(异常处理类)

//因为 service_base 中已经有了 common_utils,如果再次引入,则 common_utils 就会有多次,所以直接引入service_base 就可以了

@ControllerAdvice

public class GlobalExcept ionHandler {

//指定出现什么异常执行这个方法

@ExceptionHandler(Exception. class)

@ResponseBody //为了返回数据

public R error (Exception e) { →//(其中 R 报错,则我们可以把 common_utils 引入到 service_base 中

<artifactId>common_utils</artifactId>)

e. printStackTrace() :

return R. error(). message( "执行了全局异常处理.. ") :

}


三、什么叫依赖传递

common_utile→service_base←service_edu(在 service_base 中引入 common_utile,则在 service_edu 中只需将service_base 引入,service_edu 中就会包含 common_utile,这就叫依赖的传递。若都引入,则会出现重复依赖。

结果:

打开 swagger,

点击

/eduserice/teacher/pageTeacher/{current}/{limit}

current: 1

limit: 2

点击 try it out!

{

"success": false

"code": 20001,

"message": "执行了全局异常处理..",

"date": { }

}

相关文章
|
C语言
C语言入门——printf(““)左对齐与右对齐问题
C语言入门——printf(““)左对齐与右对齐问题
1774 0
C语言入门——printf(““)左对齐与右对齐问题
|
9月前
|
机器学习/深度学习 人工智能 搜索推荐
技术革新下的培训新趋势:案例解析
从最初的“试试看”,到如今的“非做不可”,企业培训已经成为央国企和上市公司不可或缺的战略环节。无论是AI与大模型的赋能,DeepSeek,还是具身智能、智算技术和数据科学的实战应用,这些课程都在为企业打开新的可能性。
|
9月前
|
设计模式 Java
课时111:定义枚举类
课时111介绍了枚举类的定义和使用。主要内容包括:枚举的概念、定义及与多例设计的区别,`values()`方法获取所有枚举对象,以及枚举在`switch`语句中的应用。枚举从JDK 1.5引入,简化了有限对象集合的定义,代码更简洁且编译时即可检查错误。示例展示了如何定义和使用枚举类,并对比了多例设计的复杂性。
151 1
|
机器学习/深度学习 人工智能 安全
AI攻克132年的未解之谜 | AI大咖说
本文探讨了AI在数学证明和自然科学研究中的最新进展,特别是AI成功找到新的李雅普诺夫函数,解决了132年的数学难题。文中介绍了李雅普诺夫函数的重要性,AI如何通过Transformer模型实现高准确率的预测,并讨论了AI在数学和自然科学领域的广泛应用及未来挑战。【10月更文挑战第9天】
435 1
|
存储 关系型数据库 数据库连接
数据源
数据源
440 1
|
数据采集 缓存 前端开发
获取任意网站 icon 这件事并没那么简单
本文源自开发者Pony在创作“标签星球”过程中遇到的一个需求:如何高效获取并展示网站的Logo。为此,他深入研究并自建了一套图标获取与托管服务。标签星球是一款基于浏览器收藏夹的启动页应用,能将收藏夹转换为导航页形式,并支持模糊搜索及收藏夹分享等功能。在寻找合适服务时,Pony发现现有解决方案要么受限于技术壁垒,要么覆盖范围有限,这促使他着手搭建自己的服务。文章详细介绍了该服务的设计思路和技术实现过程,包括对多种网站图标设置方法的分析、链接处理策略、获取流程、缓存机制以及错误处理方案等。
413 2
|
Linux 数据处理
Linux命令中的tic:深入了解与高效应用
`tic`是Linux中用于处理 Tektronix 4015 终端文本解释的命令,源于troff文本格式化系统。尽管现代系统不再常见该终端,`tic`仍用于特定数据处理,尤其是与troff配合,将troff输出转换为特定格式。使用时注意兼容性、输入格式和参数调整,如`-a`设定宽高比。通过`man tic`可获取更多详情。示例:`troff document.tr | tic`。了解这些能更好地处理特定文本格式任务。
|
存储 分布式计算 Hadoop
阿里巴巴飞天大数据架构体系与Hadoop生态系统的深度融合:构建高效、可扩展的数据处理平台
技术持续创新:随着新技术的不断涌现和应用场景的复杂化,阿里巴巴将继续投入研发力量推动技术创新和升级换代。 生态系统更加完善:Hadoop生态系统将继续扩展和完善,为用户提供更多元化、更灵活的数据处理工具和服务。
|
Web App开发
【视频点播】阿里云视频点播如何获取视频播放的URL
展示如何使用阿里云视频点播服务获取播放地址.
35424 0
【视频点播】阿里云视频点播如何获取视频播放的URL
|
监控 安全 物联网
相比4G,5G有那些优势满足工业4.0的技术需求
5G凭借其超高速率、超低延迟、高可靠性、大连接数等核心技术优势,有力满足了工业4.0对于实时通信、灵活生产、高效自动化及大规模物联网应用的需求。
451 0