CompletableFuture runAsync()方法的全局未经检查的异常处理程序

时间:2019-06-17 19:10:21

标签: java spring asynchronous

我的spring项目中有一些异步代码,看起来像这样:

public void someFunction(int param){
    CompletableFuture.runAsync(() -> someService.execute(param),executor);
}

我的项目中有很多类似的功能。问题在于,当在execute()函数中引发未经检查的异常时,它会丢失。我想抓住它并记录下来。我知道我可以在CompletableFuture的末尾使用exception()函数,但我不想在每个地方都对其进行修改,并且不要为这些函数使用某种全局异常处理程序。

我知道在春季,当您启用了Async并具有配置类时,您可以覆盖函数public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler()并提供AsyncUncaughtExceptionHandler的实现,该实现将处理@Async注释的函数中未捕获的异常,如下所示:

@Async
public void someFunction(int param){
    someService.execute(param);
}

有什么办法可以实现类似的东西?还是要强制AsyncUncaughtExceptionHandler来也从未使用@Async注释但具有runAsync()调用的方法中捕获异常?您将如何解决该问题?

0 个答案:

没有答案