Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Exception ist hier: Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\student7\Desktop\test.py", line 4, in <module>
f1()
File "C:\Dokumente und Einstellungen\student7\Desktop\test.py", line 2, in f1
raise TypeError
TypeError
Allerdings möchte ich, dass die Zeile mit raise nicht auftaucht.
class MyException(Exception):
def __init__(self, val):
self.val = val
def __str__(self):
return str(self.val)
def f1():
raise MyException("test")
f1()
Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\student7\Desktop\test.py", line 11, in <module>
f1() File "C:\Dokumente und Einstellungen\student7\Desktop\test.py", line 9, in f1
raise MyException("test")
MyException: test
Die fett markierten Zeilen sollten im Traceback nicht auftauchen.
Die auslösende Ausnahme kann den Traceback nicht beeinflussen. Wenn Builtins keinen vollständigen Traceback erzeugen, dann nur, weil die entsprechenden Methoden oder Funktion in C implementiert und damit der Kontrolle des Python-Interpreters entzogen sind.
Das einzige, was du tun kannst, ist den Traceback nach dem Abfangen der Ausnahme zu manipulieren, und das tiefste Callframe zu entfernen.
SchneiderWeisse hat geschrieben:ja, das habe ich nicht richtig verstanden,... ich denke, dass das dann nur über das Traceback Modul geht. Was soll das eigentlich bewirken?
Wollte nur, dass meine eigene Container-Klasse über die __getitem__ mehr wie ein Builtin wirkt. Aber der Aufwand lohnt sich dann nicht, noch am Traceback herumzumanipulieren...