-7

私のプログラムには、特定の条件が真になった場合にのみ実行する 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 の有無にかかわらずエラーは発生しません。

4

1 に答える 1

5

catch ブロックで例外を飲み込んでいます。

これは非常に悪い考えです。

これの問題は、例外のデバッグが非常に困難になることです。

あなたは現在、まさにこのシナリオを実証しています。

e.printStackTrace()他の catch ブロックに追加します。

プログラムを実行すると、有益なスタック トレースが表示されます。

スタック トレースを読むと、何が問題なのかを理解するのに役立ちます。

Amazon 関連の例外の 1 つをスローしていることは明らかです。

于 2013-07-15T19:36:08.480 に答える