【问题标题】:How to handle exceptions thrown in Filters?如何处理过滤器中抛出的异常?
【发布时间】:2015-12-12 13:12:23
【问题描述】:

我正在使用 Spring 4 和 Tomcat。问题是有时我必须在我的过滤器中抛出一个(自定义)RuntimeException(控件甚至没有到达控制器)。问题是因为我没有抛出 tomcat 理解的异常,它被转换为 500(内部服务器错误)。我相信 403 Forbidden 会比 500 更好(对于我的自定义例外)。我看过@ExceptionHandler@ControllerAdvice 注释。但这些只有在控制权到达控制器时才有效。

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

【问题讨论】:

  • 查看this SO post。您可以扩展过滤器并处理super中的异常。
  • @TimBiegeleisen - 好吧,到目前为止,我正在遵循类似的方法:)。感谢您指向该帖子。
  • @TimBiegeleisen 我遇到了类似的问题,并在这里发布了一个您可能感兴趣的解决方案stackoverflow.com/questions/34595605/…

标签: java spring spring-mvc tomcat


【解决方案1】:

你应该使用这样的东西

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

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

因此,当您获得服务时,您可以随心所欲地处理错误。

祝你好运!!!

【讨论】:

    【解决方案2】:
    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> 
    

    【讨论】:

      猜你喜欢
      • 2021-05-19
      • 2018-12-27
      • 2021-11-12
      • 2016-04-08
      • 2021-08-09
      • 2021-06-18
      • 2017-01-06
      • 2017-06-29
      相关资源
      最近更新 更多