SpringBootAOP中抛出的异常,在ControllerAdvice中捕获不
场景描述:
springboot 项⽬,使⽤AOP对特定controller做切⽚,判断⽤户是否登录,如未登录则抛出⾃定义异常;ControllerAdvice捕获该未登录异常,返回⾸页。springboot aop
先说结论:aop中抛出的异常,如果是⾮RuntimeException的⼦类,则会被封装成UndeclaredThrowableException,在ControllerAdvice中匹配不到声明的⾃定义异常。
aop抛异常源码
第436⾏⽤来判断该异常是否是该请求contoller⽅法抛出的,由于该问题中是AOP抛出的异常,所以会被封装成UndeclaredThrowableException,这样在ControllerAdvice则⽆法匹配到⾃定义异常处理逻辑。
解决⽅案: AOP中抛出的⾃定义异常需要继承RuntimeException.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。