[Webclient] Catcher une exception
Bonjour.
Je suis en train de tester la programmation réactive avec webflux (uniquement la partie cliente avec webclient).
J'ai donc une requête qui ressemble à ceci :
Code:
1 2 3 4 5
| Mono<String> response = webclient.get()
.uri(fullUri)
.retrieve()
.bodyToMono(String.class)
.onErrorResume(e -> Mono.error(new CustomException("Error"))); |
que je teste avec succès dans le cas nominal :
Code:
1 2 3 4 5 6
| @Test
void testClientNominal() {
Mono<String> response = client.request("/api/v1/clients");
response.subscribe(System.out::println);
assertNotNull(response);
} |
mais je n'arrive pas à catcher l'exception sur par exemple un 404 :
Code:
1 2 3 4 5 6 7 8 9 10
| @Test
void testClientEndpointNotFound() {
try {
Mono<String> response = client.request("/api/v1/fakeurl");
response.subscribe(System.out::println);
fail("Exception was not thrown");
} catch(CustomException e) {
System.out.println("Error");
}
} |
Code:
1 2
| reactor.core.publisher.Operators - Operator called default onErrorDropped
reactor.core.Exceptions$ErrorCallbackNotImplemented: com.sandbox.exception.ExceptionCustom: "Error" |
Je n'arrive pas à trouver des ressources sur les exceptions côté client sur le net, et je ne comprends pas ce qui cloche dans mon code.
Est-ce que mon code est correct, et si oui comment catcher l'exception correctement :question: