System.StackOverflowException 类

方法描述

因包含的嵌套方法调用过多而导致执行堆栈溢出时引发的异常。 此类不能被继承。

语法定义(C# System.StackOverflowException 类 的用法)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class StackOverflowException : SystemException

构造函数

构造函数名称 构造函数描述
StackOverflowException() 初始化 StackOverflowException 类的新实例,将新实例的 Message 属性设置为系统提供的描述错误的消息,如“所请求的操作导致堆栈溢出”。此消息将考虑当前系统区域性。
StackOverflowException(String) 使用指定错误信息初始化 StackOverflowException 类的新实例。
StackOverflowException(String, Exception) 使用指定错误信息和对作为此异常原因的内部异常的引用来初始化 StackOverflowException 类的新实例。

成员/方法

方法名称 方法描述
Equals(Object) 确定指定的 Object 是否等于当前的 Object。 (继承自 Object。)
Finalize 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
GetBaseException 当在派生类中重写时,返回 Exception,它是一个或多个并发的异常的根源。 (继承自 Exception。)
GetHashCode 用作特定类型的哈希函数。 (继承自 Object。)
GetObjectData 当在派生类中重写时,用关于异常的信息设置 SerializationInfo。 (继承自 Exception。)
GetType 获取当前实例的运行时类型。 (继承自 Exception。) 在 XNA Framework3.0GetType()。
MemberwiseClone 创建当前 Object 的浅表副本。 (继承自 Object。)
ToString 创建并返回当前异常的字符串表示形式。 (继承自 Exception。)

提示和注释

StackOverflowException 因执行堆栈溢出错误引发,通常在存在非常深的递归或无界递归时发生。 Localloc Microsoft 中间语言 (MSIL) 指令引发 StackOverflowException。

StackOverflowException 使用值为 0x800703E9 的 HRESULT COR_E_STACKOVERFLOW。 有关 StackOverflowException 对象的初始属性值列表,请参见 StackOverflowException 构造函数。

注意

继承的 Data 属性的值始终是 null。

版本注意事项

在以前版本的 .NET Framework 中,您的应用程序可以捕获 StackOverflowException 对象(例如,从无限递归恢复)。 但是,现在我们建议不要使用这种做法,原因是需要大量附加代码才能可靠地捕获堆栈溢出异常并继续执行程序。

从 .NET Framework 2.0 版开始,将无法通过 try-catch 块捕获 StackOverflowException 对象,并且默认情况下将终止相应的进程。 因此,建议用户编写自己的代码以检测和防止堆栈溢出。 例如,如果您的应用程序依赖于递归,则可以使用计数器或状态条件来终止递归循环。 请注意,承载公共语言运行时 (CLR) 的应用程序可以指定由 CLR 卸载发生堆栈溢出异常的应用程序域,并让相应的进程继续运行。 有关更多信息,请参见ICLRPolicyManager 接口和承载概述。

Windows 95, Windows 98, Windows 98 Second Edition, Windows Millennium Edition 平台说明:无法通过 try-catch 块捕获引发的 StackOverflowException。 因此,该异常将导致该进程立即终止。

System.StackOverflowException 类例子


继承层次结构

System.Object

System.Exception

System.SystemException

System.StackOverflowException

命名空间

namespace: System

程序集: mscorlib(在 mscorlib.dll 中)

线程安全

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。