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

Quarkus Mutiny多过滤器异常处理

百里阳平
2023-03-14

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

Multi multi = ...;//
multi.filter(data -> {
        try{
            return applyFilter(data);
        } catch(Exception e){
            logger.error("exception occurred while checking filter", e);
            //instead of returning false, how should I propagate the exception?
            return false;
        }
    }
).onItem().transform(data -> {
       return transformData(data);  
   }       
});

共有1个答案

慕金林
2023-03-14

如果过滤器谓词引发异常,则该异常会作为故障向下游传播。在这种情况下,如果您想返回false,则需要像以前一样(try/catch并返回false)。

在异常情况下,谓词只能抛出运行时异常。可以使用未选中的实用程序方法(https://smallrye.io/smallrye-mutiny/guides/unchecked)如果要抛出选中的异常。它将异常包装在运行时异常中。

 类似资料:
  • 异常过滤器 With Nest you can move exception handling logic to special classes called Exception Filters. 你可以使用Nest将异常处理逻辑移动到异常过滤器的特殊类中。 How it works? 怎么运行呢? Let's take a look at the following code: 让我们来看看下面

  • 内置的 异常层负责处理整个应用程序中的所有抛出的异常。当捕获到未处理的异常时,最终用户将收到适当的用户友好响应。 每个异常都由全局异常筛选器处理, 当无法识别时 (既不是 HttpException 也不是继承的类 HttpException ) , 用户将收到以下 JSON 响应: { "statusCode": 500, "message": "Internal server

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

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

  • 我正在尝试使用wicket创建一个web应用程序。以下是我遵循的步骤: > < li> 我使用以下命令创建了一个maven项目: mvn原型:generate-DarchetypeGroupId=org.apache。wicket-DarchetypeArtifactId=wicket原型快速启动-DarchetypeVersion=6.6.0-DgroupId=com。mycompany-Dar

  • 我是Spring Security的新手。 我有一段代码,我检查是否在请求中传递了授权头,如果缺少,我抛出一个异常。 我的目标是在全球范围内处理所有异常,因此我使用@ControllerAdvice。 注意:我知道@ControllerAdvice对于从这个和这个抛出的控制器之外的异常不起作用,所以我也遵循了这些链接中的建议。 重新验证入口点。Java语言 这是我配置authenticationE