问题描述1.项目是微服务项目。在新添加的模块中,在业务代码中,有抛出的异常代码。代码示例是thrownewBusinessException("HerethrowsAnexception!");2.本项目有一个公共模块(common),声明了吹全局异常的代码。代码示例如下:@ControllerAdvicepublicclassBusinessExceptionHandler{/***处理自定义业务异常**@parameException*@return*/@ResponseBody@ExceptionHandler(value=BusinessException.class)publicRTestExceptionHandler(BusinessExceptione){Rr=新R();如果(e.getCode()==0){r.put("code",R.CODE_500);}else{r.put("code",e.getCode());}r.put("msg",e.getMessage());返回r;}}3.测试过程中运行了抛出异常的代码,但是public类中处理全局异常的类没有生效。问题分析1、出现上述问题时,很明显是上述public类中的全局异常处理没有生效。2、从原理出发,分析问题,我们都知道,对于SpringBoot项目来说,默认情况下,在启动时,会扫描的类是启动类所在的文件夹及其子目录;当然,我们也可以设置@SpringBootApplication(scanBasePackages={"cn.com.test"})来设置扫描范围。3、我的项目遇到的问题是,项目示例如下:新添加的模块,启动类RestApplication所在包为“com.hs.tutu.test”,公共类位于package"com.hs.tutu.common",所以启动类代码设置如下}}公共类中的全局异常没有生效是的,在启动时,没有扫描处理全局异常的类。解决方案1.可以将项目启动类提升一层,放到“com.hs.tutu”包中。效果如下:2、可以通过设置扫描启动类包的路径。代码示例如下:}}
