栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

如何统一处理全局异常Exception

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何统一处理全局异常Exception

         或许你会很好奇,项目中的异常都是怎么统一处理的?下面我来说说,首先给大家介绍一个注解@ExceptionHandler,用来指明异常的处理类型,如果指定为NullPointException,那么数组越界异常不会进入到这个方法中。@ExceptionHandler可以接受请求处理方法抛出的异常,放在controller里的时候,只对当前的控制器有效。如果项目里有很多的controller控制器,怎么办呢?Spring提供了一个@ControllerAdvice注解,可以应用到所有的控制器上。将所有标记@ExceptionHandler的方法提取出来,放到一个类里,并加上@ControllerAdvice,所有的控制器都可以使用,起到了统一控制全局异常的作用。

定义一个全局的异常处理器,步骤如下:

1、定义一个全局处理器GlobalExceptionHandler 2、添加注@ControllerAdvice

在这个类里可以定义多个方法,不同的方法处理不同的异常。

3、编写一个自定义异常MyException

4、在GlobalExceptionHandler在resolveMyException的方法上添加@ExceptionHandler(MyException.class),指明处理这种异常。

5、编写一个Controller进行测试

在浏览器上进行测试,结果如下:

我们来看下@CcontrollerAdvice注解的源码,如下:

@ControllerAdvice注解被@Component注解标记,因此是可以被Spring注入。

如果我们只想对一部分的控制器起作用,还可以使用basePackageClasses、

assignableTypes、annotations等进行调整控制的范围。

@ControllerAdvice除了这个全局异常处理的功能外,还可以实现全局数据绑定和全局数据预处理,分别是@ModelAttribute和@InitBinder,大家自行研究。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/821875.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号