Mostrar el número de línea en el manejo de excepciones
-
22-08-2019 - |
Pregunta
¿Cómo se podría mostrar lo que el número de línea provocó el error y es esto posible con la forma en que .NET compila sus .EXEs?
Si no hay una manera automatizada para Exception.Message para mostrar el sub que crapped?
try
{
int x = textbox1.Text;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
Solución
Uso ex.ToString()
para obtener la traza completa.
Debe compilar con símbolos de depuración (archivos .pdb), incluso en el modo de disparo, para obtener los números de línea (esto es una opción en el proyecto de construcción de propiedades).
Otros consejos
Para ver la StackTrace una excepción dado, utilizar correo. StackTrace
Si necesita información más detallada, se puede utilizar el sistema rel="noreferrer"> href="http://msdn.microsoft.com/en-us/library/system.diagnostics.stacktrace.aspx" .Diagnostics.StackTrace (aquí hay un código para probar):
try
{
throw new Exception();
}
catch (Exception ex)
{
//Get a StackTrace object for the exception
StackTrace st = new StackTrace(ex, true);
//Get the first stack frame
StackFrame frame = st.GetFrame(0);
//Get the file name
string fileName = frame.GetFileName();
//Get the method name
string methodName = frame.GetMethod().Name;
//Get the line number from the stack frame
int line = frame.GetFileLineNumber();
//Get the column number
int col = frame.GetFileColumnNumber();
}
Esto sólo funciona si hay un archivo pdb disponible para el montaje. Ver las propiedades del proyecto - pestaña de construcción - Avanzada -. La selección información de depuración para asegurarse de que hay un archivo pdb
Si utiliza 'StackTrace' y incluyen los archivos .pdb en el directorio de trabajo, el seguimiento de la pila deben contener los números de línea.
string lineNumber=e.StackTrace.Substring(e.StackTrace.Length - 7, 7);