Разрешить в исключительных случаях выполнение с более чем одним типом исключений в CompletableFutureJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Разрешить в исключительных случаях выполнение с более чем одним типом исключений в CompletableFuture

Сообщение Anonymous »

У меня есть этот метод
private CompletableFuture createCode(CodeRequest codeRequest) {
return salesCompletableFuture
.supplyAsync(() -> getVoucherCode(salesRequest), forkJoinPool.threadPool())
.exceptionally(ServiceException::handleFutureException);
}

Это handleFutureException:
public static T handleFutureException(Throwable ex) {
if (ex instanceof CompletionException || ex instanceof ExecutionException) {
if (ex.getCause() instanceof ServiceException) {
throw new ServiceException((ServiceException) ex.getCause());
} else {
throw new ServiceException(ex.getCause().getMessage(), ex.getCause());
}
}
else if (ex instanceof ServiceException exception) {
throw new ServiceException(exception);
}
throw new ServiceException(ex.getMessage(), ex);
}

public ServiceException(String message, Throwable cause) {
super(message, cause);
}
}

Единственный тип исключения, который будет генерировать CompletableFuture, — это ServiceException. Можно ли каким-либо образом изменить мой код, чтобы он мог возвращать ServiceWarningException, если это действительно тип исключения, и ServiceException для всего остального?
Я попробовал следующее в handleFutureException, но это не работает .
else if (ex instanceof ServiceWarningException exception) {
throw new ServiceWarningException(exception);
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... ompletable
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»