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

如何将未捕获的异常处理程序/完成附加到CompletableFuture链

林德华
2023-03-14

用例:

  • 在CompletableFuture链期间发生异常
  • 没有例外,当完成或句柄方法附加到CompletableFuture链时

结果是:从未捕捉到异常,并且没有对其进行跟踪/记录。在异步系统的情况下,这是1)不可取的,2)难以发现的隐藏问题(如NPE、运行时Exc等)的指标。

问题:实现CompletableFuture是否可行。UncaughtExceptionHandler机制通过类比/以类似的方式与java.lang.线程。UncaughtExceptionHandler?这个想法是提供[默认]未捕获的异常处理程序/完成,如果CompletableFuture链没有java.util.concurrent.CompletableFuture。UniExcep异常完成附加。

共有1个答案

施文彬
2023-03-14

答案很简单:没有。

然而,有人发布了一个丑陋的黑客程序,在另一个线程中获得了类似的行为:如何处理CompletableFuture.runAsync中未捕获的异常

我使用ReactiveX来逃避这个问题(http://reactivex.io),但这种选择可能超出了你的控制范围。在这种情况下,您可以考虑为CompletableFuture创建一个包装类,该类始终在后台注册异常处理程序,这样您就不必再明确地调用异常(…)。但是,这只是一种变通方法。

 类似资料:
  • 我有以下情况,我试图看看是否有解决方案: 两个Spring服务调用必须并行进行(一个是现有的服务调用/逻辑,另一个是新添加的服务调用) 然而,一条快乐的道路应该是直截了当的,当涉及到服务发出的错误时,应该遵守以下规则: > 如果其中只有一个失败,则通过另一个服务(异步)记录错误,并且API只返回成功服务的结果--这可以通过相应的线程来完成。 我的问题是,因为这些服务返回某个对象的列表,即使我使用并

  • 问题内容: 我有一个应用程序,需要编写一个自定义的全局未捕获的异常处理程序。我已经阅读了所有stackoverflow线程,并且其中每个线程都只是缺少一个清晰而简单的示例,说明了如何实现这一点。 考虑以下简单示例: 它抛出一个标准异常,它只是一个标准输出。我如何实现自己的异常,该异常可以通过将错误输出到日志文件中的简单方法覆盖标准异常?显然,实际的应用程序要大得多,我们正在谈论未捕获的异常,这就是

  • 我目前在我的路由中使用dotry/doCatch块,因此我无法使用全局onException块。 然而,如果驼峰路由中断(由于错误代码或意外/未测试的场景),我希望执行一些业务逻辑。希望这永远不会发生,但我仍然想处理更糟糕的情况。 我不能在全局OneException块中有java.lang.Exception,而且,我不想在每个路由上都添加一个额外的捕获。 在抛出未捕获的异常和中断路由之前,是否

  • 问题内容: 因此,在此桌子上,我一直将头撞在桌子上几个小时,而且我什么都没走,因此我们将不胜感激。 下面的代码有两个jquery事件处理程序,它们会触发ajax请求。第一个使用GET,并且从服务器返回的数据是JSON编码的-它工作正常。返回的第二个(“ button#addTx”)使Firebug产生此错误: 未捕获的异常:[异常…“提示被用户终止” nsresult:“ 0x80040111(N

  • 我正在启动一个Java程序,如下所示 然后我手动附加调试器,如下所示 我想知道是否有反正我设置jdb,使其自动附加到正在运行的进程(仅)在未捕获的异常情况下? 原因是我希望在出现未捕获的异常之前避免调试器的开销。但我现在面临的问题是,如果没有连接调试器,那么一旦出现未捕获的异常,JVM就会中止。 编辑: 从Oracle文档来看,下面的命令似乎满足了我的需要,但适用于windows机器。 有人知道l

  • 我正在尝试创建一个过滤器来处理异常(请参见在JSF中处理未捕获的异常) 我在日志中看到错误: 我做错了什么?