Я создал класс обслуживания для вызова API:
ServiceA {
public B sendReceive(Request req) {
return Optional.of(req).map(this::transform).map(apiService::call);
}
private ApiRequest transform(Request req) {
...
}
}
ApiService {
public B call(ApiRequest req) {
return webClient.post().bodyValue(req).bodyToMono().block();
}
@ControllerAdvice
ExceptionManager {
@ExceptionHandler(Exception.class)
public ResponseEntity handle(Exception ex) {
...
}
}
Я попытался создать исключение в методе transform
для проверки класса ControllerAdvice, но он не работает. Исключение переходит непосредственно в класс InvocableHandlerMethod
вместо класса ExceptionManager, который находится внутри реактивного пакета.
Поскольку я не использую Mono
/ Flux
, типичный .onError
не будет работать для моего случая.
Как мне заставить работать ControllerAdvice? Или как мне обработать исключение в блокирующем вызове?