AttributeError: 'tuple' object has no attribute 'tb_frame'
Mein Ziel wäre aber die Zeilennummer zu erhalten wenn ein Fehler in einem importierten Modul auftritt, das nicht von mir stammt, z.B. PyQt.
Was ist hierfür der einfachste Weg?
Vielen Dank...
Code: Alles auswählen
#!/usr/bin/python3
import sys
import traceback
def test_except(file):
"test exception"
try:
f = open(file) #Hier in Zeile 8 ist der Fehler, das file gibt es gar nicht in diesem Ordner!
s = f.readline()
i = int(s.strip())
except:
print("Unexpected error:")
raise
return;
def call_func(funct_name):
"call function"
try:
test_except("hh")
except:
print(funct_name) # ,sys.exc_info() )
exc_traceback = sys.exc_info()
print("*** print_tb:")
traceback.print_tb(exc_traceback, limit=1, file=sys.stdout)
print("*** print_exception:")
traceback.print_exception(exc_type, exc_value, exc_traceback,limit=2, file=sys.stdout)
print("*** print_exc:")
traceback.print_exc()
print("*** format_exc, first and last line:")
formatted_lines = traceback.format_exc().splitlines()
print(formatted_lines[0])
print(formatted_lines[-1])
print("*** format_exception:")
print(repr(traceback.format_exception(exc_type, exc_value,exc_traceback)))
print("*** extract_tb:")
print(repr(traceback.extract_tb(exc_traceback)))
print("*** format_tb:")
print(repr(traceback.format_tb(exc_traceback)))
print("*** tb_lineno:", exc_traceback.tb_lineno)
raise
return;
call_func("test_except(file_gibt_es_nicht)")
print("end of script test.py")