Sie können Ihren eigenen Ausnahme-Hook in Python erstellen. Unten ist das Beispiel von Code, den ich verwende.
import sys
import traceback
def exceptionHandler(got_exception_type, got_exception, got_traceback):
listing = traceback.format_exception(got_exception_type, got_exception, got_traceback)
# Removing the listing of statement raise (raise line).
del listing[-2]
filelist = ["org.python.pydev"] # avoiding the debuger modules.
listing = [ item for item in listing if len([f for f in filelist if f in item]) == 0 ]
files = [line for line in listing if line.startswith(" File")]
if len(files) == 1:
# only one file, remove the header.
del listing[0]
print>>sys.stderr, "".join(listing)
Und unten sind einige Zeilen, die ich in meinem benutzerdefinierten Ausnahmecode verwendet habe.
sys.excepthook = exceptionHandler
raise Exception("My Custom error message.")
Bei dem Verfahren Ausnahme können Sie Dateinamen oder Modulnamen in der Liste „Dateinamen“ hinzufügen, wenn Sie alle unerwünschten Dateien ignoriert werden sollen. Da ich das Python-Pydev-Modul ignoriert habe, da ich Pydev-Debugger in Eclipse verwende.
Das obige wird in meinem eigenen Modul für einen bestimmten Zweck verwendet. Sie können es ändern und für Ihre Module verwenden.
Die Raise-Zeile wird ausgeblendet, wenn sie aus kompiliertem C-Code aufgerufen wird (da keine Raise-Zeile angezeigt wird). Python-Teile der Standardbibliotheken zeigen weiterhin die raise-Anweisung in einem Traceback. –
Vielleicht könnten Sie 'sys.excepthook' hacken, um die letzte Zeile auszuschließen, wenn es sich um eine' Raise' handelt. Aber generell nicht möglich, gewöhne dich dran. – delnan
Sie könnten immer nur eine nützliche Ausnahme auslösen. –