En dotNet una línea arroja una excepción y se detecta, ¿cómo puedo averiguar qué línea arrojó la excepción en el archivo? Parece relativamente sencillo, pero no puedo resolverlo ...Determinar qué línea de código arrojó la excepción
Respuesta
Solo puede hacerlo si tiene símbolos de depuración disponibles.
catch(Exception ex) {
// check the ex.StackTrace property
}
Si desea depurar una situación tal en VS, es mejor que sólo echa Thrown
casilla de verificación de Common Language Runtime Exceptions
en Exceptions
de diálogo situado en Debug
menú. El depurador se interrumpirá tan pronto como se produzca la excepción, incluso si está en un bloque try
.
podría utilizar el StackFrame Class:
try
{
...
...
}
catch(...)
{
StackFrame sf = new StackFrame(true);
int lineNumber = sf.GetFileLineNumber();
int colNumber = sf.GetFileColumnNumber();
string fileName = sf.GetFileName();
string methodName = sf.GetMethod().Name;
}
Sin embargo, tenga en cuenta que esto arrojará la información para la cláusula 'catch' ... no donde se lanzó la excepción, para eso necesita verificar el contenido de la propiedad 'StackTrace' de la excepción que atrapó. – jerryjvl
Esta respuesta es incorrecta, por las razones que jerryjvl ha declarado. ¿Cómo se puede aceptar esto como correcto? – Timwi
Pues bien, en .NET que tiene cuál es llamado un FirstChanceException. Éstos esencialmente se lanzan antes de que se maneje una excepción. Hay dos formas de ver el problema que presenta aquí. Uno es desde un ángulo de depuración. Si está depurando, puede configurar su depurador para atrapar excepciones lanzadas desde la ventana Depurar/Excepciones. Esto es más fácil en un contexto interactivo. SI usted necesita para registrar esta información desde dentro de un contexto no interactivo a continuación, me gustaría hacer algo similar a lo que CMS está hablando de ...
try
{
...
}
catch(Exception ex)
{
System.Diagnostics.StackTrace stackTrace = new System.Diagnostics.StackTrace(ex);
System.Diagnostics.StackFrame firstFrame = stackTrace.GetFrame[0];
Console.WriteLine(firstFrame.GetFileLineNumber);
...
}
La única diferencia aquí es que tenemos todo el Seguimiento de la pila, a continuación, vaya al primer fotograma, que es donde se lanzó originalmente la excepción.
¿No es el cuadro 0 el método actual de trama, no dónde se originó el error? –
Personalmente, acabo de registrar el valor de retorno ToString() de la excepción. La traza completa de la pila está incluida. Es una línea de código ... muy simple.
- 1. ¿Cómo puedo averiguar qué procedimiento arrojó una excepción en Delphi?
- 2. Cómo obtener la línea específica de código que arrojó un error
- 3. Cómo obtener qué página arrojó una excepción a Application_error en aspx
- 4. Cómo obtener el nombre del método que arrojó la excepción en Java
- 5. ¿Cómo determinar qué código de Ruby-on-Rails generó SQL?
- 6. Qué línea se elige para informar en la excepción
- 7. Excepción de MSTest: el adaptador de prueba de unidad arrojó una excepción: el tipo no se resuelve para el miembro
- 8. ¿Qué es una línea de código?
- 9. La invocación del constructor en el tipo que coincide con las restricciones de enlace especificadas arrojó una excepción
- 10. ¿Qué está causando una excepción de nullreference en este código?
- 11. ¿Determinar la línea de código que causa una falla de segmentación?
- 12. Continuar Código después de la excepción
- 13. ¿Cómo puedo determinar la excepción actual en un bloque catch (...)?
- 14. EF 4.1 Primero el código: determinar qué propiedades han cambiado
- 15. Depuración de código Java línea por línea
- 16. ¿Es posible obtener el número de línea que arrojó un error?
- 17. Cómo determinar si una excepción es de un tipo particular
- 18. Localizar el número de línea donde se produce una excepción en el código Python
- 19. Eclipse Android Debugger: ¿en qué parte de mi código causé la excepción?
- 20. Javascript eval() Excepción - número de línea
- 21. ¿Por qué extender la clase de excepción?
- 22. Mensaje de error de excepción con número de línea incorrecto
- 23. ¿Qué significa "La invocación del constructor en el tipo que coincide con las restricciones de enlace especificadas arrojó una excepción". ¿media?
- 24. Obtener número de línea de excepción de primera oportunidad
- 25. Determinar el tamaño del código C#
- 26. En ColdFusion, ¿hay alguna manera de determinar en qué servidor se está ejecutando el código?
- 27. Determinar qué rubygem está usando
- 28. ¿Cómo puedo determinar el número de línea actual en JavaScript?
- 29. ¿Cómo determinar si se está manejando una excepción .NET?
- 30. Código de Entity Framework primero: actualización SetInitializer arroja la excepción
Esta es la respuesta correcta. – Timwi