Обработка исключений запроса получения соединения Java

#java #exception-handling #get

#java #исключение #получить

Вопрос:

Я пытаюсь отправить запрос GET на веб-сайт следующим образом:

 uRL = new URL(URLString);
connection = (HttpURLConnection) uRL.openConnection();    
// optional default is GET
connection.setRequestMethod("GET");    
// add request header
connection.setRequestProperty("User-Agent", USER_AGENT);    
responseCode = connection.getResponseCode();
  

Однако мне нужно обрабатывать исключения. Например, если генерируется исключение, я попытаюсь запросить снова. Как я могу это сделать?

Ответ №1:

вы можете использовать while с try-catch so, если exception произойдет переход к следующей итерации, в противном break случае loop

 int attempts=5;
boolean flag=false;
while(attempts-- > 0){
  try{
   uRL = new URL(URLString);
   connection = (HttpURLConnection) uRL.openConnection();    
   connection.setRequestMethod("GET");    
   connection.setRequestProperty("User-Agent", USER_AGENT);    
   responseCode = connection.getResponseCode();
   flag=ture;
    break;
  }catch(Exception e){
      e.printStackTrace();
      continue;
    }
}


 if(flag){
     // mean request executed successfully 
     // don't throw exception, unless you want to break the current flow of execution
    }
  

Чтобы ограничить попытки, просто используйте переменную count(попытка) и переменную flag для проверки успешного выполнения

Комментарии:

1. флаг должен быть true в цикле while вместо ture

Ответ №2:

Идея состоит в том, чтобы поместить его в for цикл с заданным количеством возможных попыток, чтобы предотвратить бесконечный цикл, затем в любое время, когда возникает исключение, вы перехватываете его и регистрируете, а затем можете повторить попытку. Если это не удалось сделать после фиксированного количества попыток, вы можете создать исключение.

 boolean success = false;
for (int i = 1; !success amp;amp; i <= maxTries; i  ) {
    try {
        uRL = new URL(URLString);
        connection = (HttpURLConnection) uRL.openConnection();
        // optional default is GET
        connection.setRequestMethod("GET");
        // add request header
        connection.setRequestProperty("User-Agent", USER_AGENT);
        responseCode = connection.getResponseCode();
        success = true;
    } catch (Exception e) {
        logger.log(Level.SEVERE, "Could not access to the server due to {}, try {}/{}", 
            new Object[]{e.getMessage(), i, maxTries}
        );
    }
}
if (!success) {
    throw new IllegalStateException("Could not access to the server");
}