Как сгенерировать пользовательское исключение из resilience4j TimeLimitter? - PullRequest
0 голосов
/ 06 июля 2019

Я использую TimeLimiter resilience4j для управления запросами времени ожидания для вызова RestTemplate.Я выбрасываю пользовательское исключение, если response.getBody () имеет значение null, но resilience4j всегда выбрасывает исключение, предоставленное в getorElseThrow.как я могу сгенерировать пользовательское исключение здесь?

Try.ofCallable(methodWhichThrowsCustomException).getOrElseThrow(throwable -> {throw new ApplicationException(HttpStatus.REQUEST_TIMEOUT,
                    ErrorConstant.ERROR_CODE_REQUEST_TIMEOUT, ErrorConstant.ERROR_MESSAGE_TIME_OUT);
        });
    }

Здесь я пытаюсь сгенерировать исключение, которое выдает «methodWhichThrowsCustomException», но я не могу сделать это, оно только выдает исключение, сгенерированное здесь.

1 Ответ

0 голосов
/ 21 июля 2019

Я не знаю resilience4j, но я уверен, что вы используете getOrElseThrow неправильно.Синтаксис, который вам, скорее всего, нужен:

Try.ofCallable(methodWhichThrowsCustomException())
   .getOrElseThrow(throwable -> new ApplicationException(HttpStatus.REQUEST_TIMEOUT, ErrorConstant.ERROR_CODE_REQUEST_TIMEOUT, ErrorConstant.ERROR_MESSAGE_TIME_OUT));

Обратите внимание, что вам не нужно throw внутри getOrElseThrow, вам нужно только вернуть новое исключение, чтобы бросить, Vavr позаботится обросая это.

...