Java 如何处理过滤器中抛出的异常?

Java 如何处理过滤器中抛出的异常?,java,spring,spring-mvc,tomcat,Java,Spring,Spring Mvc,Tomcat,我正在使用Spring4和Tomcat。问题是有时我必须在过滤器中抛出(自定义)RuntimeException(控件甚至还没有到达控制器)。问题在于,由于我没有抛出tomcat能够理解的异常,它被转换为500(内部服务器错误)。我相信403比500更好(我的自定义例外)。我已经研究了@ExceptionHandler和@ControllerAdvice注释。但是,只有当控件到达控制器时,这些才起作用 现在,我正在过滤器中的HTTPResponse中手动将状态设置为403。有没有更好的方法来处理

我正在使用Spring4和Tomcat。问题是有时我必须在过滤器中抛出(自定义)RuntimeException(控件甚至还没有到达控制器)。问题在于,由于我没有抛出tomcat能够理解的异常,它被转换为500(内部服务器错误)。我相信403比500更好(我的自定义例外)。我已经研究了
@ExceptionHandler
@ControllerAdvice
注释。但是,只有当控件到达控制器时,这些才起作用

现在,我正在过滤器中的
HTTPResponse
中手动将状态设置为403。有没有更好的方法来处理这种情况

你应该用这样的东西

在web.xml中设置错误处理程序

<error-page>
    <exception-type>java.lang.RuntimeException</exception-type>
    <location>/handleExceptionService</location>
</error-page>

java.lang.RuntimeException
/handleExceptionService
所以,当你到达你的服务,你可以做任何你想做的错误

祝你好运

您可以在web.xml中添加
You can add in web.xml
<error-page>
    <error-code>404</error-code> 
    <location>/error-404.html</location>
</error-page> 
<error-page>
    <error-code>403</error-code> 
    <location>/access_denied.html</location>
</error-page> 
404 /error-404.html 403 /拒绝访问\u.html
退房。您可以在super中扩展过滤器并处理异常。@TimBiegeleisen-好吧,到目前为止,我采用了类似的方法:)。谢谢你指向那个帖子。@TimBiegeleisen我遇到了一个类似的问题,并在这里发布了一个可能会让你感兴趣的解决方案