2017-02-09 5 views
0

J'ai été incapable d'intercepter l'exception d'expiration de délai qui se produit dans ma requête HttpClientRequest vertex. J'ai joint ma connexion et demande le code de création dans le bloc try-catch. J'ai aussi ajouté exceptionHandler et endHandler. Mais aucun d'entre eux ne se fait virer quand le temps d'arrêt arrive. Tout ce que je reçois est le message d'erreur ci-dessous qui est imprimé sur la console. S'il vous plaît donnez-moi une idée de comment attraper cette exception, de sorte que je puisse rappeler l'appelant avec des informations pertinentes.Vertx HttpClientRequest - Impossible d'intercepter l'exception de délai d'attente

io.vertx.core.http.impl.HttpClientRequestImpl GRAVES: io.netty.channel.ConnectTimeoutException: connexion a expiré:

Le code ci-dessous est ce que j'utilise pour faire la demande au serveur . Comme vous pouvez le voir, j'ai utilisé try-catch et ajouté exceptionHandler.

try{ 
    HttpClient httpClient = Vert.x.createHttpClient(new HttpClientOptions().setSsl(true).setTrustAll(true).setVerifyHost(false)); 
    HttpClientRequest request = httpClient.get(port, host, uri.getRawPath(), event-> { 
     event.exceptionHandler(e -> { 
      log.error(" Error:: " + e); 
     }); 
     event.handler(handler -> { 
      //code 
     }); 
    });        
    request.putHeader(HttpHeaders.Names.AUTHORIZATION, "Basic "+authEnc); 
    request.end(); 
} catch(Exception e){ 
    log.error(" Exception :: " + e); 
} 
+0

du code serait certainement aider – injecteer

Répondre

1

En raison du modèle de programmation async vous ne serez pas en mesure d'utiliser try-catch depuis votre méthode a été terminée bien avant que vous l'événement de délai d'attente. Pour l'attraper, vous devez configurer un gestionnaire d'exceptions comme:

request.exceptionHandler(t -> { 
    // where t is a throwable 
    // do something with it... 
} 

Si vous êtes intéressé à la capture d'exceptions même concept applique de réponse.