💡
原文中文,约2400字,阅读约需6分钟。
📝
内容提要
在Spring Boot中,使用@ControllerAdvice和@RestControllerAdvice来处理异常。但是,自定义过滤器中的异常无法被捕获。解决方法是在过滤器中捕获异常,并将异常对象设置到Attribute属性中,然后在新建的接收异常的Controller中重新抛出异常。这样,ControllerAdvice就能捕获到异常了。
🎯
关键要点
- 在Spring Boot中,使用@ControllerAdvice和@RestControllerAdvice来处理异常。
- 自定义过滤器中的异常无法被捕获,特别是在Token过期时抛出的ExpiredJwtException。
- 请求的执行顺序为:过滤器 -> 拦截器 -> ControllerAdvice。
- ControllerAdvice无法捕获过滤器和拦截器中的异常,因为异常在到达ControllerAdvice之前就已抛出。
- 要捕获过滤器中的异常,需要在过滤器中捕获异常并将其设置到Attribute属性中,然后在新的Controller中重新抛出异常。
- 示例代码展示了如何在过滤器中捕获异常并在Controller中处理。
- 理解原理后,可以更灵活地处理异常,或分享更好的解决方案。
🏷️
标签
➡️