Java While循环仅在打印时有效

Java While循环仅在打印时有效,java,loops,Java,Loops,我的程序中有一个while循环,它只在某个条件变为真时才执行操作,但在此之前它不应该执行任何操作。我让它每次运行循环时都在控制台中打印“run”这个词,但这不再是必要的。当我移除system.out.println时,循环立即关闭并停止工作。为什么会发生这种情况 int INFINITE = 1; try { S3Object object = s3.getObject(new GetObjectRequest("saucyMMO", "logins.txt")); while

我的程序中有一个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,我都没有收到任何错误。

您正在捕获块中接受异常

这是一个非常糟糕的主意

这样做的问题是,调试异常非常困难

您目前正在演示这个确切的场景

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

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

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


很明显,您正在抛出一个与Amazon相关的异常。

您如何知道它存在于循环中?您正在捕获块中的异常。这是一个可怕的想法。。。。特别是如果您的程序没有按预期运行。即使我使用与未打印相同的输入,它也不会更改字符串“loggedInAs”或打印“loggeas:somthing”我猜要么用户名不存在,要么正在触发一个被悄悄吞没的异常。这应该是一个评论…我也有点这样认为。。。我已经说过了。我想我是想把它放在这里,以便详细说明如何解决问题或继续调试。事实上,这很有意义。你的程序执行到那个点,然后抛出一个异常(你正在安静地吞咽)。一般来说,如果我捕捉到一个异常,但我不认为它真的会发生,所以我不必费心处理捕捉,我会重新抛出一个运行时异常,以防我出错,这样它会击中我的脸,我会修复它。永远不要让一个拦网空着,即使你认为它永远不会来up@user1952381我看到的程序如此纠结,如果我没有看到它,我绝对不会相信。不要忽视一个问题(像这些例外),除非你已经证明它不是问题