Afficher le numéro de ligne dans la gestion des exceptions
-
22-08-2019 - |
Question
Comment peut-on afficher ce numéro de ligne a causé l'erreur et est-ce possible avec la manière que .NET compile ses .EXE?
Dans le cas contraire est-il un moyen automatisé pour Exception.Message pour afficher les sous qui chié sur?
try
{
int x = textbox1.Text;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
La solution
Utilisez ex.ToString()
pour obtenir la trace complète de la pile.
Vous devez compiler avec les symboles de débogage (fichiers pdb), même en mode de libération, pour obtenir les numéros de ligne (ce qui est une option dans le projet de construire des propriétés).
Autres conseils
Pour voir l'stacktrace pour une exception donnée, utilisez e. StackTrace
Si vous avez besoin de plus amples informations, vous pouvez utiliser le .Diagnostics.StackTrace classe (voici un code pour vous d'essayer):
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();
}
Cela ne fonctionnera que s'il y a un fichier pdb disponible pour l'assemblage. Voir les propriétés du projet - onglet build - Avancé -. Informations sur le débogage sélection pour vous assurer qu'il ya un fichier pdb
Si vous utilisez 'StackTrace' inclure les fichiers .pdb dans le répertoire de travail, la trace de la pile doivent contenir des numéros de ligne.
string lineNumber=e.StackTrace.Substring(e.StackTrace.Length - 7, 7);