全局异常处理器|学习笔记

简介: 快速学习全局异常处理器

开发者学堂课程【SpringBoot 实战教程 全局异常处理器】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/651/detail/10792


全局异常处理器


内容介绍:

定义

二、案例

 

一、定义

springboot 中的异常处理器使用的是aop的思想在学习 springaop 时学到异常操作通知前置通知后置通知环绕通知其中还有一个中异常抛出通知而 springboot 利用 aop 思想进行异常的处理

 

二、案例

1、创建一个全局异常处理类,命名为 GlobalExceptionHandler异常实际上是作为通知介入的所以要使用注解 ControllerAdviceAdvice 通知的意思当发生异常时对异常的处理方式写一个功能比如叫 handler 处理异常如下:

//全局异常处理器

@ControllerAdvice

public class GlobalExceptionHandler {

@ExceptionHandler (Exception. class)

指明处理哪些异常把所有异常都处理

@ResponseBody

public Map<String, Object> allExceptionHandler (

Exception exception) throws Exception

当发生异常时返回相关的异常信息这样就可以接收到发生异常时异常的对象就可以得到异常信息

{

Map<String, Object> map = new

HashMap<String, Object>() ;

把异常信息封装到map中

map. put ("errorCode", 500) ;

发生异常时显示错误码

map.put ("errorMsg", exception. toString() ) ;

显示异常信息会发生不同的异常具体是什么异常已经被 Exception 接收到所以可以从这里面获取异常信息

return map;

最后返回异常信息

}

}

2、创建 controller命名为 testcontroller

3、加注解写一个功能制造一些异常最后返回字符串当请求 Controller 时执行int a = 5/0这句话就会发生异常这时全局处理器会捕获到这个异常返回格式的异常信息

@Controller

public class TestController {

@RequestMapping ("/ show")

@ResponseBody

PublicString show ()

{

int a = 5/0;

return " show" ;

}

}

4、这两个类 GlobalExceptiorajandler.java,TestController.java 都在com.qianfeng.controller 这个包里在启动程序中已经扫描 com. qianfeng. controller 包所以都会创建它们的对象

5、启动访问路径是 show现在是附属为0。

image.png

6、换成 int[]arr=newint[3];System. out. println (arr[3])再进行访问还是访问controller这时就出现了下标越界

image.png

这就是 springboot 中进行全局异常处理器的定义方式

 

相关文章
|
设计模式 Java UED
Java全局异常处理器实现
Java全局异常处理器是一种处理Java程序中未被捕获的异常和错误的机制。它可以捕获在程序中所有代码块中发生的异常和错误,包括未被try-catch块捕获的异常和错误。通过设置全局异常处理器,可以在程序发生异常或错误时进行特定处理,如记录日志、提供友好的错误信息、发送警报等。全局异常处理器需要实现Thread.UncaughtExceptionHandler接口,并在程序启动时通过Thread.setDefaultUncaughtExceptionHandler()方法设置。
354 1
|
存储 JavaScript BI
GitHub:GitHub简介、使用方法、经验总结(图文教程)之详细攻略(持续更新!)
GitHub:GitHub简介、使用方法、经验总结(图文教程)之详细攻略(持续更新!)
|
11月前
|
监控 小程序 前端开发
微信小程序如何安装使用第三方包
本文档详细介绍了微信小程序开发中引入和使用第三方包的步骤。
1427 3
|
10月前
|
人工智能 Java 数据处理
Java高级应用开发:基于AI的微服务架构优化与性能调优
在现代企业级应用开发中,微服务架构虽带来灵活性和可扩展性,但也增加了系统复杂性和性能瓶颈。本文探讨如何利用AI技术,特别是像DeepSeek这样的智能工具,优化Java微服务架构。AI通过智能分析系统运行数据,自动识别并解决性能瓶颈,优化服务拆分、通信方式及资源管理,实现高效性能调优,助力开发者设计更合理的微服务架构,迎接未来智能化开发的新时代。
|
前端开发
CSS transition过渡属性详解
本文介绍了CSS中`transition`属性的作用、用法及实例。`transition`用于在元素属性变化时添加平滑过渡动画,通过设置`transition-property`、`transition-duration`、`transition-timing-function`和`transition-delay`等属性值,可以精细控制过渡效果。文末提供了HTML示例代码,展示了如何使用`transition`实现鼠标悬停时背景颜色的平滑变化。
583 1
|
JavaScript Java
Java 将Markdown文件转换为Word和PDF文档
【7月更文挑战第5天】Java中使用`Spire.Doc for Java`库可方便地将Markdown转换为Word或PDF。基本步骤包括导入模块,创建`Document`对象,加载Markdown文件,然后保存为目标格式(`.docx`或`.pdf`)。若遇到`Invalid UTF-8 stream`错误,需确保Markdown文件是UTF-8无BOM编码。页面设置可通过`PageSetup`类调整。注意,实际应用会依据具体需求和环境有所调整。
2104 6
|
存储 安全 算法
加盐哈希的科学原理及其重要性
【8月更文挑战第31天】
801 0
uniapp获取当前时间
uniapp获取当前时间
338 0
|
JSON 前端开发 Java
SpringBoot - 统一格式封装及高阶全局异常处理
SpringBoot - 统一格式封装及高阶全局异常处理
247 0
|
Windows
全网超详细的【Axure】Axure RP 9的下载、安装、中文字体、授权
全网超详细的【Axure】Axure RP 9的下载、安装、中文字体、授权
1500 0
全网超详细的【Axure】Axure RP 9的下载、安装、中文字体、授权