好奇心が強い。 In an answer StackOverflowErrorsを捕まえようとしています。「スタックオーバーフローによって、アプリケーションがメモリが枯渇したように矛盾する状況が生じることは間違いありません。 StackOverflowErrorsでは、バグの場合にスローされるNullPointerException以上にアプリケーションの状態を破壊する恐れがあるため、特別な点は何ですか?私が考えることのできることの1つは、StackOverflowErrorは通常例外(または他のThrowable、そのような問題)がスローされることのない場所(たとえば単純なゲッター)で発生する可能性があるためです。もっと悪魔的な問題はありますか?StackOverflowErrorをキャッチする際の害は何ですか?
答えて
スタックオーバーフローエラーは、メモリが使い果たされたことを意味するものではなく、メモリ自体が矛盾するものではありません。
しかし、スタックオーバーフローエラーは通常バグです。例外をキャッチするのではなく、バグを修正する必要があります。バグを隠すために例外システムを使用しないでください。
スタックが深すぎる(グラフの探索など)危険性がある場合でも、スタックを爆発させるよりも、それを制御する方が良い方法があります。 the Javadoc of the Error superclassから
:
エラーは、合理的なアプリケーションがキャッチすべきではないという重大な問題を 示すThrowableのサブクラスです。そのようなほとんどの は、異常な状態です。 ThreadDeathエラーは、 の「通常の」状態ですが、ほとんどの アプリケーションがそれをキャッチしようとするべきではないため、Errorのサブクラスです。
面白いことは...あなたは実際にこのエラーをキャッチすることはできません。何かできるようになる前にVMがクラッシュします。 –
@PaulNikonowicz - 実際には、JVMが適切に実装されていれば、それを捕まえることができます。あなたは、ハンドラが何をする必要があるかを行うのに十分なスタックスペースがあることを十分に把握する必要があります。 –
本当にOutOfMemoryErrorだったとしても、何が矛盾しているのでしょうか?例外を引き起こす他のバグよりも多くのことがありますか? BTW:まともなアプリケーションでは、エンドユーザにスタックトレースを提示するのを避けるために、アプリケーションのトップレベルのどこかでエラーを含むすべてをキャッチする必要があります。 –
エラーがゆえ をキャッチすべきではない重大な問題である。この方法は、あなたが
スロー-句を宣言する必要はありません、エラーをスローした場合も、スーパークラス(のThrowable) をキャッチしていませんアプリケーションの動作がエラー 後、多くの場合、予測できない - にStackOverflowErrorがスローされた場合、エラーがそう異常
を示し、アプリケーションは今のスタックの場所の最大値に達しました。あなたのアプリケーションを再チェックして、ガベージコレクタが早く
答えをありがとう。私はガベージコレクタがこれと何をしなければならないかはよく分かりません。とにかく - 私の質問は、SOEが私が質問に示したより悪い結果をもたらすことができるかどうかだった。 –
- 1. 匿名のクラスを使用する際の害は何ですか?
- 2. Java stackoverflowerror使用する正しいスタックサイズは何ですか?
- 3. このStackOverflowErrorのcuaseとは何ですか?
- 4. EventMachineサーバーのトップレベルの障害をキャッチする方法は?
- 5. MUI_PAGE_WELCOMEを何度も使用するのは無害ですか?
- 6. ベストプラクティス:のjava.net.URLでキャッチ障害ポイント
- 7. XMLからSQLiteコアのデータストアに切り替える際に起こりうる障害は何ですか?
- 8. は害ですか?
- 9. 推奨されるクリーン障害メカニズムは何ですか
- 10. 今日のオブジェクト検出の障害は何ですか?
- 11. 私のシングルトンクラスがStackOverflowerrorをスローするのはなぜですか?
- 12. Connectionプールの使用は何ですか?それは有害ですか?
- 13. TCP障害を処理するための適切なメカニズムは何ですか?
- 14. StackOverflowErrorでsbtコンパイルが失敗するのはなぜですか?
- 15. Django CSRF障害 - 障害の原因として考えられるものは何ですか?
- 16. NIOでUDPを使用する際のポイントは何ですか?
- 17. iPadでUIDatePickersを使用する際のガイドラインは何ですか?
- 18. データストア無害クエリのパフォーマンスとキーによるアクセスの違いは何ですか?
- 19. GSON Stackoverflowerrorを改訂する
- 20. StackOverflowErrorツリーを構築する
- 21. ヌルポインタインテントからデータをキャッチする際のエラー
- 22. StackOverflowErrorはいつスローされますか?
- 23. Log4j Loggerを作成する際のオーバーヘッドは何ですか?
- 24. 実際にフィルタを適用するのは何ですか?
- 25. これをプログラミングする際の名前は何ですか?
- 26. xpathを使用する際のセキュリティリスクは何ですか?
- 27. ng-styleを使用する際の短所は何ですか?
- 28. minikubeを使用する実際の方法は何ですか?
- 29. StringBuilderを使用する際の短所は何ですか?
- 30. リカレントニューラルネットワークを参照する際のタイムステップとは何ですか?
私は、データエラーではなくコーディングエラーのためにSOEが通常発生すると考えています。他のコメントは、「スタックオーバーフローエラーは通常バグですが、通常はNPEではありませんか? –
@ user2310289 NPEにはさまざまな方法があります。多くの場合、いくつかのテストをスキップして、try/catchシステムに時々頼ることがあります。しかし、はい、NPEをキャッチすることも珍しいはずです。 –
これはエラーです。例外ではありません! –