InvalidEnumArgumentException 类

使用无效参数(为枚举数)时引发的异常。

**命名空间:**System.ComponentModel
**程序集:**System(在 system.dll 中)

语法

声明
<SerializableAttribute> _
Public Class InvalidEnumArgumentException
    Inherits ArgumentException
用法
Dim instance As InvalidEnumArgumentException
[SerializableAttribute] 
public class InvalidEnumArgumentException : ArgumentException
[SerializableAttribute] 
public ref class InvalidEnumArgumentException : public ArgumentException
/** @attribute SerializableAttribute() */ 
public class InvalidEnumArgumentException extends ArgumentException
SerializableAttribute 
public class InvalidEnumArgumentException extends ArgumentException

备注

如果向某方法传递无效枚举值或设置属性时,引发该异常。

提示

应用到此类的 HostProtectionAttribute 属性 (Attribute) 具有下面的 Resources 属性 (Property) 值:SharedStateHostProtectionAttribute 不影响桌面应用程序(这些应用程序通常通过双击图标、键入命令或在浏览器中输入 URL 来启动)。有关更多信息,请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护属性

示例

下面的代码示例演示如何捕获 InvalidEnumArgumentException 异常并解释其内容。该示例试图通过强制转换来将无效的枚举值 (MessageBoxButtons) 作为 MessageBox.Show 方法的第三个参数进行传递。捕获到异常时,该示例获取各自的错误信息、无效参数、堆栈跟踪以及该异常的来源。

Try
    ' Attempts to pass an invalid enum value (MessageBoxButtons) to the Show method
    Dim myButton As MessageBoxButtons
    myButton = CType(123, MessageBoxButtons)
    MessageBox.Show("This is a message", "This is the Caption", myButton)
Catch invE As System.ComponentModel.InvalidEnumArgumentException
    Console.WriteLine(invE.Message)
    Console.WriteLine(invE.ParamName)
    Console.WriteLine(invE.StackTrace)
    Console.WriteLine(invE.Source)
End Try
try 
{
// Attempts to pass an invalid enum value (MessageBoxButtons) to the Show method
    MessageBoxButtons myButton= (MessageBoxButtons) 123;
    MessageBox.Show("This is a message","This is the Caption",myButton);
}
catch(InvalidEnumArgumentException invE) 
{
    Console.WriteLine(invE.Message);
    Console.WriteLine(invE.ParamName);
    Console.WriteLine(invE.StackTrace);
    Console.WriteLine(invE.Source);
}
try
{
   //Attempting to pass an invalid enum value (MessageBoxButtons) to the Show method
   MessageBoxButtons myButton = (MessageBoxButtons)123; // to fix use System::Windows::Forms::DialogResult::OK;

   MessageBox::Show( this,  "This is a message",  "This is the Caption", myButton );
}
catch ( InvalidEnumArgumentException^ invE ) 
{
   Console::WriteLine( invE->Message );
   Console::WriteLine( invE->ParamName );
   Console::WriteLine( invE->StackTrace );
   Console::WriteLine( invE->Source );
}
try {
    // Attempts to pass an invalid enum value (MessageBoxButtons)
    // to the Show method
    MessageBoxButtons myButton = (MessageBoxButtons)123;
    MessageBox.Show("This is a message", 
        "This is the Caption", myButton);
}
catch (InvalidEnumArgumentException invE) {
    Console.WriteLine(invE.get_Message());
    Console.WriteLine(invE.get_ParamName());
    Console.WriteLine(invE.get_StackTrace());
    Console.WriteLine(invE.get_Source());
}

继承层次结构

System.Object
   System.Exception
     System.SystemException
       System.ArgumentException
        System.ComponentModel.InvalidEnumArgumentException

线程安全

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

平台

Windows 98、Windows 2000 SP4、Windows Millennium Edition、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

请参见

参考

InvalidEnumArgumentException 成员
System.ComponentModel 命名空间