【发布时间】:2017-04-20 14:58:57
【问题描述】:
我有一个控制器建议来处理我的应用程序抛出的所有验证异常,如下所示。
@RestControllerAdvice
public class RestApiExceptionController {
@ExceptionHandler(ValidationErrorException.class)
public ResponseEntity<?> appNotFoundException(ValidationErrorException exception) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse(exception.getErrorCode(), exception.getMessage()));
}
}
以我的方式,我想创建一个过滤器,对每个请求进行验证,并在必要时抛出自定义异常。但问题是我不能抛出自定义异常,如下所示。
public class ValidationFilter implements Filter {
...
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
throw new ValidationErrorException(); // This is impossible
}
...
}
在这种情况下如何抛出 ValidationErrorException 或者有其他更好的方法来处理此类任务。
【问题讨论】:
-
是的,您可以...它必须是
RuntimeException或ServletException。这也与 Spring 无关,而是与通用 Servlet API(甚至通用 Java 编程)无关。
标签: java spring spring-mvc servlet-filters