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