Obtenir l numéro de ligne apres un crash en csharp

Signaler
Messages postés
9
Date d'inscription
dimanche 12 décembre 2004
Statut
Membre
Dernière intervention
15 juillet 2013
-
Messages postés
16114
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 juillet 2021
-
Bonjour,
j'ai écrit une DLL qui s'exécute coté serveur en mode WEB
Cette DLL est automatiquement lancée par un progiciel en mode "mémoire" et ne prend donc pas en compte le fichier PDB qui lui est accolé
J'ai une erreur dont je connais la méthode mais pas le numéro de ligne
Comment puis-je récupérer le numéro de ligne en erreur ?

Toute ma reconnaissance éternelle à celle ou celui qui me trouve une astuce!
merci d'avance

1 réponse

Messages postés
16114
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 juillet 2021
555
Bonsoir,

dans la clause catch, l'exeption a une propriété StackTrace qui te donne le nom de la méthode, le chemin du fichier source et le numéro de ligne

            try
            {
                string[] tableau = { "0", "1", "2" };
                string valeur = tableau[3];
            }
            catch (Exception ex)
            {

                string toto = ex.StackTrace;
            }
malheureusement non. cela ne marche que si un fichier pdb est présent. sinon, il n'y a pas le numéro de ligne. c'est là le problème et le but de ma question. mais merci quand même.
Messages postés
16114
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 juillet 2021
555
Ha ouais, désolé.

J'ai une solution de bourin, c'est d'incrémenter un int à chaque ligne....
Messages postés
16114
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 juillet 2021
555
            int i = 1;
            try
            {
                
                string[] tableau = { "0", "1", "2" }; i++;
                string valeur = tableau[3]; i++;
                valeur  = tableau[2]; i++;
            }
            catch (Exception ex)
            {

                string toto = ex.StackTrace;
                MessageBox.Show(toto + ", i: " + i);
                MessageBox.Show(ex.ToString() + ", i: " + i);
            }