7
votes

Lorsque j'attrape une exception, comment puis-je obtenir le type, le fichier et le numéro de ligne de la trame précédente?

de Cette question , je fais maintenant une erreur de manipulation d'un niveau. C'est-à-dire que j'appelle une fonction qui appelle une autre fonction plus grande, et je veux où elle a échoué dans cette fonction plus grande, pas dans la fonction la plus petite. Exemple spécifique. Le code est le suivant: xxx

sortie est: xxx

mais la ligne 8 est "PRINT WEURCHFOVE ()" - Je sais que cette ligne a échoué, mais Je veux la ligne avant: xxx


0 commentaires

3 Réponses :


4
votes

Ajouter une ligne: xxx

juste après votre appel à sys.exc_info .

Voir les docs ici sous" Objets de trace ".


0 commentaires

2
votes

Vous devez trouver le bas de la trace, vous devez donc vous boucher jusqu'à ce qu'il n'y ait plus de cadres. Faites cela pour trouver le cadre que vous souhaitez:

while tb.tb_next:
    tb = tb.tb_next


0 commentaires

3
votes

tb.tb_next est votre ami: xxx

mais le module de traceback fait cela et bien plus encore: xxx


0 commentaires