try-catch-finally
実行フローの仕組みを理解しようとしています。スタックオーバーフローのユーザーからの実行フローに関する2つのソリューションがあります。try-catch-finallyの実行順序はランダムであるようです。
その一例は以下のとおりです。
try { // ... some code: A } catch(...) { // ... exception code: B } finally { // finally code: C }
コードAが実行されようとしています。すべてがうまくいくと(すなわち、Aが実行されている間に例外がスローされない)、それは
finally
に行くので、コードCが実行されます。例外がスローされた場合はAが実行されている間、それはC.
に最終的にはそれからBに移動しますしかし、私は別の実行は、私はそれをしようとしたときに流れてしまった:
try {
int a=4;
int b=0;
int c=a/b;
}
catch (Exception ex)
{
ex.printStackTrace();
}
finally {
System.out.println("common");
}
を私は取得しています二つの異なる出力:
まず出力:
java.lang.ArithmeticException:/by zero
at substrings.main(substrings.java:15)
lication.AppMain.main(AppMain.java:140)
common
Howev
第二出力::私は二度目の同じプログラムを実行したときに、ER、
common
java.lang.ArithmeticException:/by zero
at substrings.main(substrings.java:15)
私はこのことから何を締結する必要がありますか?それはランダムになる予定ですか?
これまでの結果はどうでしたか、それはランダムではありません。クロスチェック。 –
異なるシステムストリームが不適切な形式の出力を生成する –
デバッガを接続してコードをステップ実行しようとしましたか? – iceman