为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

幕布斯7119047 2019-05-15 10:41:40
项目中使用了shiro做权限控制,在controller上注解了@RequiresPermissions,当没有权限时,会抛出异常,但是这个异常是在拦截器中抛出的,springboot的ControllerAdvisor无法捕捉到。请教下,如何进行处理?
查看完整描述

2 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

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

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信