当前位置: 首页 > 知识库问答 >
问题:

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

寇坚成
2023-03-14

我正在使用Spring4和Tomcat。问题是有时我不得不在我的筛选器中抛出一个(自定义的)RuntimeException(控件甚至还没有到达控制器)。问题是,由于我没有抛出tomcat理解的异常,它被转换为500(内部服务器错误)。我相信403禁止会比500好(对于我的定制例外)。我查看了@ExceptionHandler@ControllerAdvise注释。但只有当控件到达控制器时,这些才起作用。

到目前为止,我在筛选器的httpresponse中将状态手动设置为403。有没有更好的方法来处理这种情况?

共有1个答案

曹超
2023-03-14

你应该用这样的东西

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

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

所以,当你到达你的服务,你可以做任何你想做的错误。

 类似资料:
  • 我想使用通用的方式来管理5xx错误代码,让我们具体地说,当数据库在我的整个spring应用程序关闭的情况。我想要一个相当错误的json而不是堆栈跟踪。 对于控制器,我有一个类来处理不同的异常,这也可以捕捉db在请求中间停止的情况。但这还不是全部。我还碰巧有一个自定义的扩展了,当我调用时,我会得到并且它不会被管理。我在网上读了几件事,只会让我更加困惑。 所以我有很多问题: 是否需要实现自定义筛选器?

  • 我有下面的代码块。我得到的是的catch块没有处理它。有人能告诉我如何处理下面的块抛出的异常吗?

  • 我有一个验证令牌的自定义筛选器tokenLoginFilter 我的Spring安全 令牌登录过滤器 在authenticationmanager . authenticate调用中,我从TokenAuthenticationProvider中抛出了BadCredentialsException 令牌身份验证提供程序 Tomcat将此BadCredentialsException解释为错误代码50

  • 在multi的filter方法中处理异常的正确方法是什么,因为我们只能返回布尔值,不能传播失败?这就是我的代码现在的样子,我应该如何正确处理过滤器中的异常?

  • 虽然已经在响应拦截器里做了一些全局处理,最后是通过 Promise.reject 抛出的异常 现在每个接口请求方法都还是得写 try/catch 或者 .catch() 真的好麻烦 有什么比较好的方案吗?

  • 假设我有一个类和一个方法 现在,我想为由流传递的的每个实例调用foo,如下所示: 问题:如何正确处理异常?代码在我的机器上没有编译,因为我没有处理foo()可能引发的异常。的在这里似乎没有用。这是为什么?