Mostra il numero di riga nella gestione delle eccezioni

Come si può visualizzare quale numero di riga ha causato l’errore ed è anche ansible con il modo in cui .NET compila i suoi .exes?

In caso contrario, c’è un modo automatico per Exception.Message per visualizzare il sottotitolo che è saltato fuori?

try { int x = textbox1.Text; } catch(Exception ex) { MessageBox.Show(ex.Message); } 

Utilizzare ex.ToString() per ottenere la traccia dello stack completo.

È necessario compilare con simboli di debug (file .pdb), anche in modalità di rilascio, per ottenere i numeri di riga (questa è un’opzione nelle proprietà di costruzione del progetto).

Per visualizzare lo stacktrace per una determinata eccezione, utilizzare e.StackTrace

Se hai bisogno di informazioni più dettagliate, puoi utilizzare la class System.Diagnostics.StackTrace (qui puoi provare un codice):

 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(); } 

Questo funzionerà solo se è disponibile un file pdb per l’assembly. Vedi le proprietà del progetto – scheda build – Avanzate – Selezione informazioni di debug per assicurarti che ci sia un file pdb.

Se si utilizza “StackTrace” e si includono i file .pdb nella directory di lavoro, la traccia dello stack deve contenere numeri di riga.

 string lineNumber=e.StackTrace.Substring(e.StackTrace.Length - 7, 7);