猿问

SpringBoot中如何处理Controller之前的异常

项目中使用了shiro做权限控制,在controller上注解了@RequiresPermissions,当没有权限时,会抛出异常,但是这个异常是在拦截器中抛出的,springboot的ControllerAdvisor无法捕捉到。
请教下,如何进行处理?
幕布斯7119047
浏览 1893回答 2
2回答

繁星点点滴滴

没大明白你确切想做什么,如果你是想要一个统一的异常捕捉类的话,我可以给你提供一个思路。Spring可以通过注解和xml方式达到这样的效果。看你的风格应该是注解比较习惯的,那我讲讲简单的Ex抛出处理,首先创建一个MyExceptionAdviceHandler类,加上@ControllerAdvice注解,该注解是控制器的一个增强,作用于所有RequestMapping注解上(没有指定特定包的情况下),然后声明一个processException的方法,携带有一个Exception的参数ex,该方法需要对控制器的异常捕捉因此需要@ExceptionHandler,同时我建议再加上一个@ResponseBody注解,可以友好一点。然后声明一个ApiResponse对象并把ex异常注入其中然后返回,这样一个通用捕捉类就写好了。我写段样例代码吧,如果有不正的地方欢迎大牛拍砖指正。`@ControllerAdivcepublicclassMyExceptionHandler{@ResponseBody@ExceptionHandlerpublicApiResponseprocessEx(Exceptionex){ApiResponseresp=ApiResponse.responseError(ex);returnresp;}}`
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答