2017-02-09 12 views
0

私の頂点HttpClientRequestで発生するタイムアウト例外をキャッチできませんでした。私は自分の接続を囲み、try-catchブロックに作成コードを要求しています。また、私はexceptionHandlerとendHandlerを追加しました。しかし、タイムアウトが起こると、誰も解雇されません。私が受け取るのは、コンソールに表示される以下のエラーメッセージです。この例外をキャッチする方法を私に教えてください。そうすれば、呼び出し元に関連情報を返すことができます。Vertx HttpClientRequest - タイムアウト例外をキャッチできません

io.vertx.core.http.impl.HttpClientRequestImplは SEVERE:io.netty.channel.ConnectTimeoutException:接続がタイムアウトになりました:

次のコードは、私は、サーバーへの要求を行うために使用するものです。ご覧のとおり、try-catchを使用してexceptionHandlerを追加しました。原因あなたはタイムアウトイベントを取得する前に、あなたの方法は、長い終了しているので、あなたがtry-catchを使用することはできません非同期プログラミングモデルに

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

いくつかのコードが間違いなく助けになる – injecteer

答えて

1

。それを捕まえるには、次のような例外ハンドラを設定する必要があります。

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

応答例外を捕捉することに興味があれば、同じ概念が適用されます。

関連する問題