2017-02-09 10 views
0

Мне не удалось перехватить исключение из таймаута, которое происходит в моем vertx HttpClientRequest. Я включил мое соединение и запросил код создания в блоке try-catch. Также я добавил exceptionHandler и endHandler. Но никто из них не увольняется, когда происходит тайм-аут. Все, что я получаю, - это следующее сообщение об ошибке, которое печатается на консоли. Пожалуйста, дайте мне понять, как поймать это исключение, чтобы я мог позвонить вызывающему абоненту с соответствующей информацией.Vertx HttpClientRequest - Не удалось исключить тайм-аут

io.vertx.core.http.impl.HttpClientRequestImpl СИЛЬНЫЙ: io.netty.channel.ConnectTimeoutException: тайм-аут подключения:

ниже код, что я использую, чтобы сделать запрос на сервер , Как вы можете видеть, я использовал try-catch и добавил 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

Некоторый код определенно поможет – injecteer

ответ

1

Благодаря программирует модели асинхронной вы не сможете использовать try-catch, поскольку ваш метод уже давно прекращено, прежде чем вы получите событие тайм-аута. Для того, чтобы поймать его необходимо настроить обработчик исключений, как:

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

Если вы заинтересованы в ловле исключения ответа применяется та же концепция.

 Смежные вопросы

  • Нет связанных вопросов^_^