130

なぜUnhandledExceptionEventArgs.ExceptionObjectオブジェクトであり、ではないのExceptionですか?

に付けていAppDomain.UnhandledExceptionます。

にキャストUnhandledExceptionEventArgs.ExceptionObjectして、質問したいExceptionと思います。

そして、これを念頭に置いて、それがヌルになることはありますか?

MSDNのドキュメントは非常に役に立ちません。

未処理の例外オブジェクトを取得します。

4

2 に答える 2

153

System.Exceptionから派生していないオブジェクトを.Netにスローする可能性があるため、これをExceptionに入力することはできません。これはC#またはVB.Netでは不可能ですが、他のCLRベースの言語では可能です。したがって、APIはこの可能性をサポートする必要があり、タイプオブジェクトを使用します。

したがって、nullになることはありませんが、実際にはSystem.Exceptionではない可能性があります。

詳細については、CLI仕様セクション10.5(具体的にはCLSルール40)を参照してください。

于 2009-05-27T00:51:31.303 に答える
82

Jaredがすでに述べたことに加えて、アセンブリに適用されているException場合は、.NET Framework 2.0以降で安全にキャストできRuntimeCompatibilityAttribute(WrapNonExceptionThrows=true)ます(C#およびVBコンパイラによって自動的に追加されます)。

この属性が適用されると、例外以外の「例外」はでラップされRuntimeWrappedExceptionます。

于 2009-09-17T15:30:52.673 に答える