"小熊,忙什么呢,吃饭去了",大猫扯着嗓子喊道。
"哎呀,我这又出异常了,等我处理下,马上就来!"小熊一边回复一边不断敲击着键盘。
大猫跑到小熊这边一看:
MyServiceImpl.java
MyController.java
duang duang duang,一顿操作猛如虎,小熊对大猫说,好了,我们吃饭去吧。大猫拉住小熊,哎呀,你这异常处理写了两遍呀,每个控制层、业务层都写一遍耗资源不说而且就算出错,具体出错信息也看不出来哇。
"嗯,那倒是,那你有什么好的处理方式吗"小熊虚心求教。
大猫笑着说,spring提供了统一异常注解,只要写一个公共异常处理类加上注解,所有controller异常全都能自动捕获啦。
"这么厉害,快写给我看看!"小熊迫不及待。
1、首先创建统一异常处理类 MyControllerAdvice.java
@ControllerAdvice 是一个特殊的@Component,定义在一个类上,该类则负责捕获所有@RequestMapping上发生的异常(包括controller调用的service),这样一来所有的异常只要抛出就行,统一进行捕获处理即可。
2、配合@ExceptionHandler注解完成异常捕获
小熊仔细看了下,”你这里是把所有异常都直接处理了,万一我想根据不同类型的异常进行不同的处理呢?”
“没问题” 大猫说到,“你看@ExceptionHandler后面拦截的是所有异常,当然也可以细分,像这样”
“同理,当然也可以是自定义异常,这都是可以的。是不是非常方便和灵活?”
小熊欣喜到,”以后不仅少写代码,和业务代码解耦,维护起来也更方便了,真不错,大猫,真有你的,走,我请你吃饭!“
知识就是饭票
---- 鲁迅