Весна @retryable аннотация - зачем пытаться восстановиться на неописуемых исключениях?JAVA

Программисты JAVA общаются здесь
Anonymous
Весна @retryable аннотация - зачем пытаться восстановиться на неописуемых исключениях?

Сообщение Anonymous »

Я пытаюсь использовать @retryable и @recover , и мне явно не хватает.

Код: Выделить всё

// MyRetryableException is a RuntimeException
@Retryable(retryFor = MyRetryableException.class, maxAttempts = 3)
public void doSomething(String s) throws JustGiveUpException {
final var response = talkToSomething(s);
if (response.getStatus().equals("retryableProblem")) {
throw new MyRetryableException(s);
else if (response.getStatus().equals("someOtherProblem")) {
throw new JustGiveUpException(s);
}
}

// UnableToCommunicateException is a RuntimeException
@Recover
public void handleFailedRetries(MyRetryableException e, String s) {
throw new UnableToCommunicateException(s);
}
Когда статус ответа будет повторяется Когда я тестирую код, используя макет, который всегда будет возвращать ответ с RetryableProblem , я в конечном итоге возвращаю untableToCommunicateException и могу проверить, что TalkToSomome действительно был вызван три раза. Я ожидал получить JustGiveUpexception . Но вместо этого я получаю исчерпывающее экологически чистое с причиной JustGiveUpexception и сообщением о невозможности найти метод восстановления . Хотя я вижу, что Talktosomhething называется только один раз.
Почему это происходит? Я говорю о повторной аннотации , что оно должно повторно повторить MyRetryableException . Так почему же он пытается повторно повторно/восстановиться на другом исключении?

Подробнее здесь: https://stackoverflow.com/questions/796 ... exceptions

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