Java实站系列之全局异常处理

         或许你会很好奇,项目中的异常都是怎么统一处理的?下面我来说说,首先给大家介绍一个注解@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,大家自行研究。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值