Si no se usa un generador de perfiles, ¿hay alguna forma de detectar excepciones en la primera oportunidad dentro de un programa en ejecución? 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.¿Hay alguna manera de registrar o interceptar Excepciones de primera oportunidad
Respuesta
Creo que la única forma en que puede obtener esa información en .NET es utilizando un depurador.
De lo contrario, tendrá que desarrollar una solución para guardar el estado de una pila y tener una manera especial de 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 utilizar un recurso de registro (log4net, EnterpriseLibrary, NLog, rodar uno propio) para volcar hilo/pila/información variable sobre la marcha.
En cualquier caso, agregar toda esta información adicional es una gran sobrecarga.
EDIT: Tengo noticias de este proyecto en mi feed: NTrace. Parece que encajará un poco más de lo que estás tratando de hacer.
Use Adplus. Conectará un depurador al proceso y generará (de forma predeterminada) un pequeño minivolcado cuando se produzcan excitaciones 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.
yo estaba buscando en Google FirstChanceException, y no me resisto a responder a esta más de dos años después ...
Ahora, en .net 4.0, se puede coger el FirstChanceException event del dominio de aplicación. 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.
Ojalá hubiera una manera de hacerlo en .net 3.5. Tengo un proceso 3.5 en producción y algo así como 'FirstChanceException' en 3.5 podría ayudarme a rastrear un problema de desconexión ... –
- 1. Una excepción de primera oportunidad
- 2. ¿Hay alguna manera de interceptar setters y getters en C#?
- 3. ¿Hay alguna manera de enlazar o interceptar las llamadas CoGetClassObject y/o CoCreateInstance?
- 4. Obtener número de línea de excepción de primera oportunidad
- 5. Visual Studio/C++: ¿Cómo desactivar ciertos mensajes de depuración de excepciones de primera oportunidad?
- 6. Cómo encontrar excepciones de primera oportunidad desde la ventana de salida
- 7. ¿Hay alguna manera de hacer que SAS se detenga con la primera advertencia o error?
- 8. ¿Cómo puedo configurar Visual Studio para que muestre un seguimiento de pila para excepciones de primera oportunidad?
- 9. ¿Hay alguna manera de configurar Fiddler para interceptar llamadas HTTP desde un servicio de Windows?
- 10. ¿Hay alguna manera de imitar o en genéricos de Java
- 11. De alguna manera, registrar mis clases en una lista
- 12. ¿hay alguna manera de usar tr /// (o equivalente) en java?
- 13. ¿Hay alguna manera de usar Canvas en IE7 o IE8?
- 14. ¿Hay alguna manera de memorizar o materializar un IEnumerable?
- 15. ¿Existe alguna manera más clara de registrar eventos personalizados Qt?
- 16. .NET - ¿Escucha de excepción de la primera oportunidad para una depuración intensiva?
- 17. ¿Cómo puedo interceptar excepciones no detectadas en Tomcat?
- 18. ¿Cómo registrar excepciones en appengine?
- 19. ¿Existe alguna manera de manejar excepciones en Python?
- 20. ¿Hay alguna manera de desactivar una etiqueta?
- 21. ¿Hay alguna manera de acelerar Jsoup.parse()?
- 22. ¿Hay alguna manera de evitar recursiones innecesarias?
- 23. ¿Hay alguna manera de reenviar declarar covarianza?
- 24. ¿Hay alguna manera de omitir el parámetro?
- 25. ¿Hay alguna manera de seleccionar el primer personaje? : Primera carta no parecen funcionar
- 26. ¿hay alguna manera de omitir la primera entrada en un iterador?
- 27. ¿Hay alguna manera de interceptar y modificar la secuencia de salida html en asp.net, para combinar el javascript?
- 28. ¿Hay alguna manera de cancelar StorageFile.CopyAsync()?
- 29. ¿Hay alguna manera de pausar una CABasicAnimation?
- 30. ¿Hay alguna manera de negar un predicado?
¿Qué información es que pierdes? – pipTheGeek
Feliz de ser corregido: si no maneja todas las excepciones en cada método y se asegura de que todas las variables estén definidas fuera del bloque try-catch, en el punto en que se produce la excepción final, no tendrá acceso a todas las variables que estaban disponibles en el contexto de ejecución de la excepción original. –