У меня есть этот метод
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
Разрешить в исключительных случаях выполнение с более чем одним типом исключений в CompletableFuture ⇐ JAVA
Программисты JAVA общаются здесь
1729786367
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);
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79122824/allow-exceptionally-to-complete-with-more-than-one-exception-type-in-completable[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия