StackOverflowException クラス
アセンブリ: mscorlib (mscorlib.dll 内)

<SerializableAttribute> _ <ComVisibleAttribute(True)> _ Public NotInheritable Class StackOverflowException Inherits SystemException
[SerializableAttribute] [ComVisibleAttribute(true)] public sealed class StackOverflowException : SystemException
[SerializableAttribute] [ComVisibleAttribute(true)] public ref class StackOverflowException sealed : public SystemException

StackOverflowException は、再帰の回数がかなり多い場合や無限に続く場合などに生じる、実行スタックのオーバーフローによるエラーに対してスローされます。MSIL (Microsoft Intermediate Language) の Localloc 命令は、StackOverflowException をスローします。
StackOverflowException は、値 0x800703E9 を保持する HRESULT COR_E_STACKOVERFLOW を使用します。StackOverflowException オブジェクトの初期プロパティ値の一覧については、StackOverflowException コンストラクタのトピックを参照してください。
![]() |
---|
バージョンの考慮事項
.NET Framework の以前のバージョンでは、アプリケーションは StackOverflowException オブジェクトをキャッチできました (たとえば、無限の再帰から回復するため)。ただし、この方法は現在は推奨されていません。スタック オーバーフロー例外を確実にキャッチしてプログラムの実行を続行するには、多数の追加コードが必要だからです。
.NET Framework Version 2.0 以降は、StackOverflowException オブジェクトを、try-catch ブロックによってキャッチすることはできません。対応するプロセスは既定で終了されます。したがって、スタック オーバーフローを検出して防ぐためのコードを記述することをお勧めします。たとえば、アプリケーションが再帰の使用に依存する場合は、カウンタまたは状態の条件を使用して再帰的ループを終了します。共通言語ランタイム (CLR) をホストするアプリケーションには、スタック オーバーフロー例外が発生したアプリケーション ドメインを CLR によってアンロードし、対応するプロセスを続行するように指定できます。詳細については、ICLRPolicyManager、共通言語ランタイムのホスト の各トピックを参照してください。
Windows 95, Windows 98, Windows 98 Second Edition, Windows Millennium Edition プラットフォームメモ : スローされた StackOverflowException を try-catch ブロックでキャッチすることはできません。したがって、例外によってプロセスは即座に終了させられます。

System.Exception
System.SystemException
System.StackOverflowException


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- StackOverflowException クラスのページへのリンク