Java While循环仅在打印时有效

时间:2013-07-15 19:32:28

标签: java loops

我的程序中有一个while循环,只有在某个条件成立时才会执行操作,但在此之前它应该什么也不做。我每次运行循环时都在控制台中打印“run”这个词,但这已不再需要了。当我删除system.out.println时,循环立即关闭并停止工作。为什么会这样?

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 个答案:

答案 0 :(得分:5)

你正在吞食积木中的例外情况。

这是一个非常非常糟糕的主意。

问题在于它使非常难以调试异常。

您目前正在展示这种确切的情况。

e.printStackTrace()添加到其他catch块。

运行程序时,您将看到信息丰富的堆栈跟踪。

读取堆栈跟踪将帮助您找出问题所在。

很明显,你正在抛出其中一个亚马逊相关的例外。