我的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()调用的方法中捕获异常?您将如何解决该问题?