2013-07-15 3 views
-6

У меня есть цикл while в моей программе, который делает вещи только тогда, когда определенное условие становится истинным, но до этого ничего не должно делать. У меня была печать в консоли слова «побежали» каждый раз, когда он запускал цикл, но это уже не нужно. Когда я удаляю system.out.println, цикл замыкается мгновенно и перестает работать. Почему это происходит?Java Пока цикл работает только при печати

int INFINITE = 1; 
try { 
    S3Object object = s3.getObject(new GetObjectRequest("saucyMMO", "logins.txt")); 
    while (INFINITE == 1) { 
     System.out.println(); 
     if (tryToLogin == true) { 
      INFINITE = 0; 
      BufferedReader br = new BufferedReader(
       new InputStreamReader(object.getObjectContent())); 
      String lineValue = null; 
      while((lineValue = br.readLine()) != null && loggedInAs == null) { 
      String splitResult[] = lineValue.split(","); 
       boolean retVal = splitResult[0].equals(ui.usernameLogin.getText()); 
       boolean retVal2 = splitResult[1].equals(ui.passwordLogin.getText()); 
       if (retVal == true && retVal2 == true) { 
        loggedInAs = splitResult[0]; 
      System.out.println("logged in as : " + loggedInAs); 
       } else if (retVal && !retVal2){ 
        System.out.println("User exists, but password is incorrect"); 
       } else { 

       } 
      } 
     } 
    } 
} catch (AmazonServiceException ase) { 

} catch (AmazonClientException ace) { 

} catch (IOException e) { 
    e.printStackTrace(); 
} 

Я добавил в обработке для AmazonServiceException и AmazonClientException исключения, но я не получаю никаких ошибок с или без System.out.println.

+1

Откуда вы знаете, что существует цикл? – w4etwetewtwet

+9

Вы глотаете исключения в своем блоке catch. Это ** ужасная ** идея. – jahroy

+1

... особенно если ваша программа не ведет себя так, как вы ожидаете. –

ответ

5

Вы проглатываете исключения в своих блоках catch.

Это очень очень Плохая идея.

Проблема с этим она делает это очень трудно отлаживать исключения.

В настоящее время вы демонстрируете этот точный сценарий.

Добавить e.printStackTrace() в другие ваши блоки.

Когда вы запустите свою программу, вы увидите информативную трассировку стека.

Чтение трассировки стека поможет вам понять, что происходит не так.

Совершенно ясно, что вы выбрасываете один из этих Исключений, связанных с Amazon.

+1

Это должен быть комментарий ... –

+1

Я тоже так подумал ... и я уже прокомментировал. Я предполагаю, что я пытался поместить его сюда, чтобы я мог подробно рассказать о том, как исправить проблему или продолжить отладку. – jahroy

+0

Благодарим за это, это помогает прояснить некоторые вещи, но по-прежнему не имеет смысла, почему это имеет значение, если оператор while печатает «ran» – user1952381

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