1. ホーム
  2. c#

[解決済み] C# スタックオーバーフロー例外をキャッチする

2022-06-28 01:04:57

質問

スタックオーバーフロー例外を投げるメソッドを再帰的に呼び出すことがあります。最初の呼び出しは try catch ブロックで囲まれていますが、例外は捕捉されません。

スタックオーバーフロー例外は特別な方法で動作するのでしょうか。例外を適切にキャッチ/処理することができますか?

関連性があるかどうかは分かりませんが、追加情報です。

  • メインスレッドで例外がスローされない

  • コードが例外をスローしているオブジェクトは、Assembly.LoadFrom(...).CreateInstance(...)によって手動でロードされます。

どのように解決するのですか?

2.0からStackOverflow Exceptionは以下の状況でのみ捕捉できるようになりました。

  1. CLR がホストされた環境で実行されている。 * ホストが特に StackOverflow 例外を処理することを許可している場合。
  2. スタックオーバーフロー例外はユーザーコードによって投げられ、実際のスタックオーバーフローの状況によるものではありません ( 参照 )

* 私のコードはCLRをホストし、私はCLRのオプションを設定する」という意味で、「私のコードは共有ホスティングで実行される」という意味ではありません。