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);
}
Était-ce utile?

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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top