Глобальный обработчик непроверенных исключений для методов runAsync () CompletableFuture - PullRequest
0 голосов
/ 17 июня 2019

У меня есть некоторый асинхронный код в моем весеннем проекте, который выглядит примерно так:

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

В моем проекте много таких функций. Проблема заключается в том, что когда в функции execute () генерируется непроверенное исключение, оно теряется. Я хочу поймать это и зарегистрировать это. Я знаю, что в конце CompletableFuture я могу использовать исключительную функцию (), но я бы предпочел не изменять ее везде и иметь какой-то глобальный обработчик исключений для этих функций.

Я знаю, что весной, когда вы включили Async и у вас есть класс конфигурации, вы можете перезаписать функцию public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() и предоставить реализацию для AsyncUncaughtExceptionHandler, которая будет обрабатывать необработанные исключения из функций, аннотированных с @Async, например:

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

Есть ли способ, которым я мог бы реализовать нечто подобное? Или заставить AsyncUncaughtExceptionHandler перехватывать исключения также из методов, которые не аннотированы с @Async, но имеют вызов runAsync ()? Как бы вы решили эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...