¿Por qué UnhandledExceptionEventArgs.ExceptionObject es un objeto y no una excepción?
-
06-09-2019 - |
Pregunta
Por que es UnhandledExceptionEventArgs.ExceptionObject
un objeto y no un Exception
?
me estoy adjuntando a AppDomain.UnhandledException
.
me gustaria emitir UnhandledExceptionEventArgs.ExceptionObject
a una Exception
e interrogarlo.
Y teniendo esto en cuenta, ¿alguna vez será nulo?
El documentación de MSDN no es del todo útil.
Obtiene el objeto de excepción no controlado.
Solución
Esto no se puede escribir en Exception porque es posible generar objetos en .Net que no se deriven de System.Exception.Esto no es posible en C# o VB.Net, pero sí en otros lenguajes basados en CLR.Por lo tanto, la API debe admitir esta posibilidad y utiliza el tipo objeto.
Entonces, si bien nunca debería ser nulo, es posible que en realidad no sea una System.Exception.
Consulte la sección 10.5 de las especificaciones de CLI (específicamente la regla 40 de CLS) para obtener más detalles.
Otros consejos
Además de lo que Jared ya ha mencionado, se puede emitir de manera segura a Exception
en .NET Framework 2.0 y superior si RuntimeCompatibilityAttribute(WrapNonExceptionThrows=true)
ha sido aplicado a su montaje (se añadirá automáticamente por el C # y VB compiladores).
Cuando se ha aplicado este atributo, no Excepción "excepciones" será envuelto en RuntimeWrappedException
.