3

以下のプログラムでは、次の出力が得られることがあります。

Number Format Execption For input string: "abc"
123

そしていつか:

123
Number Format Execption For input string: "abc"

try / catchブロックの間に優先順位がありますか、またはSystem.outとSystem.errの間に優先順位がありますか?

ランダム出力の理由は何ですか?

コード:

String str1 = "abc";
String str2 = "123";

     try{
         int firstInteger = Integer.parseInt(str1);
         System.out.println(firstInteger);
     }
     catch(NumberFormatException e){
         System.err.println("Number Format Execption " + e.getMessage());
     }

       try{
         int SecondInteger = Integer.parseInt(str2);
         System.out.println(SecondInteger);
         }
     catch(NumberFormatException e){
         System.err.println("Number Format Execption " + e.getMessage());
     }
4

2 に答える 2

12

これは、try / catchとは関係がなく、System.outとSystem.errに書き込んでいることと関係があります。これらは2つの異なるストリームであり、コンソールに書き込まれるときにインターリーブの順序を制御することはできません。

于 2012-05-03T18:33:20.797 に答える
0

ストリームを明示的にフラッシュしてみてください。

System.out.flush();
System.err.flush();
于 2012-05-03T18:43:45.633 に答える