De this question, je suis en train de faire des erreurs de niveau inférieur. C'est-à-dire, 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 plus petite fonction. Exemple spécifique Code est:Lorsque j'attrape une exception, comment obtenir le type, le fichier et le numéro de ligne de l'image précédente?
import sys, os
def workerFunc():
return 4/0
def runTest():
try:
print workerFunc()
except:
ty,val,tb = sys.exc_info()
print "Error: %s,%s,%s" % (
ty.__name__,
os.path.split(tb.tb_frame.f_code.co_filename)[1],
tb.tb_lineno)
runTest()
sortie est:
Error: ZeroDivisionError,tmp2.py,8
mais la ligne 8 est "imprimer workerFunc()" - Je sais que la ligne a échoué, mais je veux la ligne avant:
Error: ZeroDivisionError,tmp2.py,4