System.OverflowException 类

方法描述

在选中的上下文中所进行的算术运算、类型转换或转换操作导致溢出时引发的异常。

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

[SerializableAttribute]
[ComVisibleAttribute(true)]
public class OverflowException : ArithmeticException

构造函数

构造函数名称 构造函数描述
OverflowException() 初始化 OverflowException 类的新实例。
OverflowException(String) 使用指定错误信息初始化 OverflowException 类的新实例。
OverflowException(SerializationInfo, StreamingContext) 用序列化数据初始化 OverflowException 类的新实例。
OverflowException(String, Exception) 使用指定错误信息和对作为此异常原因的内部异常的引用来初始化 OverflowException 类的新实例。

成员/方法

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

提示和注释

当出现以下情况时,将在运行时引发 OverflowException:

算术运算产生的结果超出由运算返回的数据类型的范围。 下面的示例说明了由溢出 OverflowException 类型界限的乘法运算引发的 Int32。

C#

VB

复制

int value = 780000000;

checked {

try {

// Square the original value.

int square = value * value;

Console.WriteLine("{0} ^ 3 = {1}", value, square);

}

catch (OverflowException) {

double square = Math.Pow(value, 2);

Console.WriteLine("Exception: {0} > {1:E}.",

square, Int32.MaxValue);

} }

// The example displays the following output:

// Exception: 6.084E+17 > 2.147484E+009.

强制转换或转换操作尝试执行收缩转换,并且源数据类型的值超出了目标数据类型的范围。 下面的示例说明了由将较大的无符号字节值转换为有符号字节值的尝试引发的 OverflowException。

C#

VB

复制

byte value = 241;

checked {

try {

sbyte newValue = (sbyte) value;

Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.",

value.GetType().Name, value,

newValue.GetType().Name, newValue);

}

catch (OverflowException) {

Console.WriteLine("Exception: {0} > {1}.", value, SByte.MaxValue);

} }

// The example displays the following output:

// Exception: 241 > 127.

在每种情况下,运算的结果都是小于运算结果数据类型的 MinValue 属性或大于运算结果数据类型的 MaxValue 属性的值。

要使算术运算、强制转换操作或转换操作引发 OverflowException,操作必须发生在所检查的上下文中。 默认情况下,在 Visual Basic 中会检查数学运算和溢出;在 C# 中不检查数学运算和溢出。 如果操作发生在未检查的上下文中,计算的结果被截断,放弃不适合目标类型的任何高序位。 下面的示例说明了 C# 中这样的未检查转换。 它在未检查的上下文中重复前面的示例。

C#

复制

byte value = 241;

try {

sbyte newValue = (sbyte) value;

Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.",

value.GetType().Name, value,

newValue.GetType().Name, newValue);

}

catch (OverflowException) {

Console.WriteLine("Exception: {0} > {1}.", value, SByte.MaxValue);

}

// The example displays the following output:

// Converted the Byte value 241 to the SByte value -15.

下面的 Microsoft 中间语言 (MSIL) 指令引发 OverflowException:

add.ovf. <已签名>

conv.ovf. <目标类型>

conv.ovf. <目标类型> .un

mul.ovf. <类型>

sub.ovf. <类型>

newarr

OverflowException 使用值为 0x80131516 的 HRESULT COR_E_OVERFLOW。

有关 OverflowException 实例的初始属性值列表,请参见 OverflowException 构造函数。

System.OverflowException 类例子


继承层次结构

System.Object

System.Exception

System.SystemException

System.ArithmeticException

System.OverflowException

命名空间

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 系统要求。