代码之家  ›  专栏  ›  技术社区  ›  Simon Randy Burden

为什么UnhandledExceptionEventArgs.ExceptionObject是对象而不是异常?

  •  119
  • Simon Randy Burden  · 技术社区  · 15 年前

    为什么是 UnhandledExceptionEventArgs.ExceptionObject 对象而不是 Exception ?

    我喜欢 AppDomain.UnhandledException .

    我想铸 UnhandledExceptionEventArgs.ExceptionObject 例外 把它混合起来。

    考虑到这一点,它会永远是空的吗?

    这个 MSDN documentation 不是很有用。

    获取未处理的异常对象。

    2 回复  |  直到 6 年前
        1
  •  139
  •   JaredPar    15 年前

    不能将此类型化为异常,因为有可能在.NET中引发不是从System.Exception派生的对象。这在C或VB.NET中是不可能的,但在其他基于CLR的语言中是可能的。因此,API必须支持这种可能性并使用类型对象。

    所以尽管它不应该是空的,但实际上它可能不是System.Exception。

    有关更多详细信息,请参阅cli规范第10.5节(特别是cls规则40)。

        2
  •  75
  •   Dennis    13 年前

    除了Jared已经提到的,您还可以安全地 Exception 在.NET Framework 2.0及更高版本中,如果 RuntimeCompatibilityAttribute(WrapNonExceptionThrows=true) 已应用于程序集(将由C和VB编译器自动添加)。

    应用此属性后,非异常“exceptions”将被包装在 RuntimeWrappedException .