130 votes

Pourquoi est-UnhandledExceptionEventArgs.ExceptionObject un objet et non une Exception ?

Pourquoi est-UnhandledExceptionEventArgs.ExceptionObject un objet et non pas une Exception?

Je joins à AppDomain.UnhandledException.

Je voudrais cast UnhandledExceptionEventArgs.ExceptionObject à une Exeption et interogate.

Et c'est dans cet esprit sera jamais nulle?

La documentation MSDN n'est pas exatly utile

http://msdn.microsoft.com/en-us/library/system.unhandledexceptioneventargs.exceptionobject.aspx

"Obtient l'exception non gérée objet."

Merci

152voto

JaredPar Points 333733

Cela ne peut pas être tapé à Exception parce qu’il est possible de projeter des objets dans .net qui ne dérivent pas de System.Exception. Ce n’est pas possible en c# ou VB.Net, mais il est possible dans d’autres langages de base de CLR. Par conséquent, l’API doit prendre en charge cette possibilité et utilise l’objet type.

Ainsi tandis que jamais, il ne doit pas être null, il en fait peut-être pas une exception System.Exception.

Voir la section Spécification de CLI 10,5 (plus précisément l’article CLS 40) pour plus de détails

82voto

Nicole Calinoiu Points 14034

En plus de ce que Jared a déjà mentionné, vous pouvez basculer en toute sécurité vers Exception dans .NET Framework 2.0 et supérieur si RuntimeCompatibilityAttribute(WrapNonExceptionThrows=true) a été appliqué à votre assembly (sera ajouté automatiquement par le C #). et compilateurs VB).

Lorsque cet attribut a été appliqué, les "exceptions" non liées aux exceptions seront converties en RuntimeWrappedException .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X