为什么是UnhandledExceptionEventArgs.ExceptionObject
一个对象而不是一个Exception
?
我附在AppDomain.UnhandledException
.
我想投到UnhandledExceptionEventArgs.ExceptionObject
一个Exception
并询问它。
考虑到这一点,它会永远为空吗?
MSDN 文档不是特别有用。
获取未处理的异常对象。
为什么是UnhandledExceptionEventArgs.ExceptionObject
一个对象而不是一个Exception
?
我附在AppDomain.UnhandledException
.
我想投到UnhandledExceptionEventArgs.ExceptionObject
一个Exception
并询问它。
考虑到这一点,它会永远为空吗?
MSDN 文档不是特别有用。
获取未处理的异常对象。
这不能输入到 Exception,因为可能会在 .Net 中抛出不是从 System.Exception 派生的对象。这在 C# 或 VB.Net 中是不可能的,但在其他基于 CLR 的语言中是可能的。因此 API 必须支持这种可能性并使用类型对象。
因此,虽然它不应该为 null,但它实际上可能不是 System.Exception。
有关更多详细信息,请参阅 CLI 规范第 10.5 节(特别是 CLS 规则 40)
除了 Jared 已经提到的内容之外,如果已应用于您的程序集(将由 C# 和 VB 编译器自动添加) ,您可以Exception
在 .NET Framework 2.0 及更高版本中安全地转换为。RuntimeCompatibilityAttribute(WrapNonExceptionThrows=true)
应用此属性后,非异常“异常”将被包裹在RuntimeWrappedException
.