tipos - todas las excepciones en c#
Mostrar número de línea en el manejo de excepciones (4)
¿Cómo se mostraría qué número de línea causó el error y esto es posible con la forma en que .NET compila sus .exes?
Si no, ¿existe una forma automatizada para que Exception.Message muestre el sub que se eliminó?
try
{
int x = textbox1.Text;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
Si usa ''StackTrace'' e incluye los archivos .pdb en el directorio de trabajo, el seguimiento de la pila debe contener números de línea.
Para ver el stacktrace para una excepción dada, use e.StackTrace
Si necesita información más detallada, puede usar la clase System.Diagnostics.StackTrace (aquí hay algunos códigos para que pruebe):
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 solo funcionará si hay un archivo pdb disponible para el ensamblaje. Vea las propiedades del proyecto - pestaña de compilación - Avanzado - Selección de información de depuración para asegurarse de que hay un archivo pdb.
string lineNumber=e.StackTrace.Substring(e.StackTrace.Length - 7, 7);
Use ex.ToString()
para obtener el seguimiento completo de la pila.
Debe compilar con símbolos de depuración (archivos .pdb), incluso en modo de lanzamiento, para obtener los números de línea (esta es una opción en las propiedades de compilación del proyecto).