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 Client.java : Sélectionner tout - Visualiser dans une fenêtre à part
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 Test.java : Sélectionner tout - Visualiser dans une fenêtre à part
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 Test.java : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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