繁体   English   中英

如何区分 Controller 和 HandlerInterceptor 异常?

[英]How to separate Controller and HandlerInterceptor exception?

  • 示例拦截器代码
package com.my.interceptor;

public class MyInterceptor implements HandlerInterceptor {
  @Override
  public boolean preHandle( ... ) throws Exception {
    throw new Exception("test exception"); // throw test exception
  }
}
  • 样品 controller 代码
package com.my.controller;

@RestController
@RequiredArgsConstructor
public MyController {
  @GetMapping( "/my" )
  public ResponseEntity getMy() {
    ...
  }
}
  • 示例异常处理程序代码
package com.my.handler;

@RestControllerAdvice( basePackages = { "com.my.interceptor" } ) // Doesn't handle interceptor
// @RestControllerAdvice( basePackages = { "com.my.controller" } ) // Handle both interceptor and controller
public class MyExceptionHandler extends ResponseEntityExceptionHandler {
  @ExceptionHandler( value = { Exception.class } )
  public void handleException( HttpServletRequest request, Exception e) {
    ...
  }
}

我想在不创建自定义异常的情况下处理来自拦截器的异常。

但是 MyExceptionHandler 中的basePackages = { "com.my.interceptor" }不处理来自拦截器的异常。

当我将 basePackages 更改为basePackages = { "com.my.controller" }时,它同时处理拦截器和 controller。

为什么会发生这种情况,我该如何处理拦截器的异常?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM