.net - personalizadas - personalized exception c#
¿Hay alguna forma de registrar o interceptar excepciones de First Chance? (3)
Si no se usa un generador de perfiles, ¿hay alguna forma de que un programa en ejecución detecte excepciones de primera oportunidad? Idealmente, me gustaría registrar información de estado más detallada que no está disponible una vez que el bloque catch se ha hecho cargo de la excepción final.
Use Adplus . Conectará un depurador al proceso y generará (de forma predeterminada) un minivolcado pequeño cuando se produzca una excitación de primera oportunidad. El archivo de registro generado Adplus también contendrá información de excepción. Solo asegúrate de que tienes PDB disponible para ver la información completa de calstack.
Creo que la única forma en que puede obtener esa información en .NET es usando un depurador.
De lo contrario, tendrá que desarrollar una solución usted mismo para guardar el estado de una pila y tener una forma especial para registrar excepciones. Básicamente harías las mismas cosas que hace un generador de perfiles de memoria, realiza un seguimiento de las instancias que se crean. Sin embargo, esto sería un gran golpe de rendimiento a menos que limite la cantidad de información que está registrando.
Una mejor solución sería usar las capacidades Trace y Assert en el espacio de nombres System.Diagnostics para rastrear selectivamente el estado del programa, o para usar un recurso de registro (log4net, EnterpriseLibrary, NLog, rodar uno propio) para volcar thread / stack / información variable sobre la marcha.
En cualquier caso, agregar toda esta información adicional es una gran sobrecarga.
EDIT: recibí noticias de este proyecto en mi feed: NTrace . Parece que encajará un poco más de lo que estás tratando de hacer.
Estaba buscando en Google FirstChanceException, y no puedo resistirme a responder a esto más de dos años después ...
Ahora, en .net 4.0, puede capturar el evento FirstChanceException del AppDomain. Es solo un evento, por lo que no puede manejar el error, pero parece ser una forma buena y central de obtener información sobre excepciones, ya sea que se manejen o no. El evento FirstChanceException se lanza antes de que se permita que un bloque catch lo maneje. No he encontrado mucha información al respecto, pero aparte de la documentación de Microsoft, una de las mejores fuentes es Mitch Sellers Blog .