общепринятый вариант или скрытая разница в этих двух вариантах?
Мне второй нравится больше тем, что менее "простынно" выглядит
public Future<MyModelsResp> asyncGetModelsById(String id) {
if (condition) {
return executorService.submit(() -> {
// ...
});
}
return null;
}
vs
public Future<MyModelsResp> asyncGetModelsById(String id) {
if (!condition) {
return null;
}
return executorService.submit(() -> {
// ...
});
}
я бы переделал на CompletableFuture, так как она композируется и не возвращал бы null никогда
а зачем налл возвращать, на крайняк есть Future.fail ?
третий вариант накину) я люблю прописывать такие штуки через явный else чтобы выражение внутри одной ветки не могли влиять на исполнение выражений в другой ветке и да лучше возвращать не null а completed future
прошу прощения, имел ввиду CompletableFuture#failedFuture()
Всегда пользуй второй вариант
Интересный вопрос.. Оказалось, что на этот случай есть класс AsyncHelper с методом, который принимает Future и делает проверку return feature != null ? feature.get() : null;, обёрнутую в try-catch, внутри catch содержится логика и кидаются кастомные IntegrationException
Да, в общем случае лучше. Я правильно понимаю, что в моём случае проблем особо нет, так как всё равно нужно проверять причину (exception.getCause()) и кидать кастомные эксепшны в блоке catch? https://t.me/jvmchat/462969. Если переписать на CompletableFuture, то просто в трае не будет тернарника
Обсуждают сегодня