誰でもStackOverFlowErrorの動作を説明できますか?StackOverFlowError処理とJavaリカバリ
StackOverFlowErrorは無限再帰を引き起こしますが、スタックがいっぱいになってから他のメソッドが実行されることはありますか?私はcatchブロックでエラーを処理しました。私は、Javaの機能や、キャッチされたエラーから回復する方法を知りたいと思います。
サンプルコード:
public class Test {
public static void main(String[] args) {
try {
show();
} catch(StackOverflowError e) {
System.out.println(e);
}
System.out.println("After StackOverFlowError");
display();
}
static void show() {
show();
}
static void display() {
System.out.println("Hello New Function");
}
}
、出力は次のとおりです。ティムは、あなたはそれが可能である代わりにあれば、StackOverflowErrorが処理されません言ったように
java.lang.StackOverflowError After StackOverFlowError Hello New Function
通常、実行時例外である 'StackOverflowError'から回復しません。再帰が爆発するなら、コードを修正するか、別の条件で再実行してみてください。 –
私はあなたが質問を得ていないと思います。 StackOverFlowErrorは、それがどのように動作し、Javaがそれから回復するかを理解するために意図的に生成されています。私の質問は、無限の再帰の後、スタックがいっぱいであれば、技術的に他のメソッドをスタックにプッシュする必要がないので、display()はどのように呼び出されますか? Javaはそれから回復しましたか? – Divyanshi
あなたは例外をキャッチしました、あなたは何かに驚いていますか?再帰はまだ死んでしまった。もしあなたが結果を期待していたら、おそらくそれは得られないだろう。通常、実際には 'StackOverflowError'のようなチェックされていない例外をキャッチしません。 –