为了统一异常,我们通常定义一个统一管理所有Exception,包括自定义Exception的ExceptionHandle
@ControllerAdvice拦截控制器
@ExceptionHandler(value=Exception.class)拦截句柄
之前好用,但是整理了一下文件,放在了Exception文件夹,各种检查发现,就是这个Controller根本不起作用,发生异常也跳不进来,代码没问题,在网上看也有很多人碰到了这个问题
所以我一看,果然没有这个图标,代表识别为Spring的一个Bean,呵呵呵呵。。。所以识别不出来
然后我像之前一样把ExceptionHandle.java单放一个文件夹就Ok,放在Contoller Service等等其他文件夹都可以识别,特点就是原有文件夹已有可以识别的bean
所以
作为一个@ControllerAdvice, ExceptionHandle.java要单独存放文件夹
或者已有bean的文件夹,否则和其他非bean文件放在一起就识别不出来。
PS:也有可能是该类并没有放在项目的包下面:比如我的项目路径为:com.example.demo,而我的异常类的package 被我没注意建在了和com 同级的目录下
大家一定小心这个坑!这个经验对大家判断某个类或接口是否作为SpringBean识别,解决其他问题也非常有用!
1)未识别的ExceptionHandle,没有
2)识别的ExceptionHandle,有