@ControllerAdvice的作用范围

@ControllerAdvice的作用范围

@ControllerAdvice
public class GlobalExceptionHandler {}

老师我想问一下@ControllerAdvice这个注解的作用范围是什么呢?

我在UserFilter中尝试抛出一个错误,但是发现GlobalExceptionHandler这个类并不会对它进行拦截,这是为什么呢?

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,@ControllerAdvice作用范围是拦截程序中抛出的异常,如Controller中抛出Exception异常。过滤器filter中的异常是拦截不到的。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

好帮手慕阿满 2020-07-21 13:42:30

同学你好,@ControllerAdvice统一异常拦截处理是无法拦截filter中抛出的异常的。

这里建议同学按照老师的写法,使用如下形式输出异常。

http://img1.sycdn.imooc.com//climg/5f1680380924694807930296.jpg


祝:学习愉快~

  • 提问者 慕仔5998689 #1
    谢谢老师,所以我想问的就是@ControllerAdivce的作用范围是什么呢?它除了拦截不到filter的异常,还有什么地方的异常是拦截不到的呢?
    2020-07-23 22:55:15
好帮手慕阿满 2020-07-20 15:36:06

同学你好,@ControllerAdvice注解配合@ExceptionHandler用于全局异常的处理。同学在UserFilter中抛出的是什么异常,在GlobalExceptionHandler是否该异常进行获取。

祝:学习愉快~

  • 提问者 慕仔5998689 #1
    @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; HttpSession session = request.getSession(); User currentUser = (User)session.getAttribute(Constant.CURRENT_USER); if (currentUser == null) { throw new ImoocPostException(ImoocPostExceptionEnum.NEED_LOGIN); } filterChain.doFilter(servletRequest, servletResponse); } 老师,我之前是这样写的异常抛出,它不会按照ApiRestResponse的格式输出消息
    2020-07-20 21:53:54
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师