← Каталог
Рекомендации по разработке на Java — 8.2. Обработка ошибок в асинхронном коде
Фрагмент из «Рекомендации по разработке на Java»: 8.2. Обработка ошибок в асинхронном коде.
// Плохо: исключение может быть потеряно
CompletableFuture.supplyAsync(() -> fetchData())
.thenAccept(data -> processData(data));
// Если fetchData выбросит исключение, оно не будет обработано
// Хорошо: обработка ошибок
CompletableFuture.supplyAsync(() -> fetchData())
.thenApply(data -> {
processData(data);
return data;
})
.exceptionally(ex -> {
logger.error("Failed to process data", ex);
return null;
}); // Плохо: исключение может быть потеряно
CompletableFuture.supplyAsync(() -> fetchData())
.thenAccept(data -> processData(data));
// Если fetchData выбросит исключение, оно не будет обработано
// Хорошо: обработка ошибок
CompletableFuture.supplyAsync(() -> fetchData())
.thenApply(data -> {
processData(data);
return data;
})
.exceptionally(ex -> {
logger.error("Failed to process data", ex);
return null;
});