Why is UnhandledExceptionEventArgs.ExceptionObject an object and not an Exception?

后端 未结 2 1994
时光取名叫无心
时光取名叫无心 2020-12-04 17:33

Why is UnhandledExceptionEventArgs.ExceptionObject an object and not an Exception?

I am attaching to AppDomain.UnhandledException

相关标签:
2条回答
  • 2020-12-04 17:48

    In addition to what Jared has already mentioned, you can safely cast to Exception in .NET Framework 2.0 and higher if RuntimeCompatibilityAttribute(WrapNonExceptionThrows=true) has been applied to your assembly (will be added automatically by the C# and VB compilers).

    When this attribute has been applied, non-Exception "exceptions" will be wrapped in RuntimeWrappedException.

    0 讨论(0)
  • 2020-12-04 18:03

    This cannot be typed to Exception because it's possible to throw objects in .Net that do not derive from System.Exception. This is not possible in C# or VB.Net but it is possible in other CLR based languages. Hence the API must support this possibility and uses the type object.

    So while it shouldn't ever be null, it may not in fact be a System.Exception.

    See CLI spec section 10.5 (specifically CLS rule 40) for more details

    0 讨论(0)
提交回复
热议问题