è possibile creare il proprio hook di eccezione in python. di seguito è riportato l'esempio del codice che sto usando.
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)
E di seguito sono alcune linee che ho utilizzato nel mio codice di eccezione personalizzato.
sys.excepthook = exceptionHandler
raise Exception("My Custom error message.")
Nel eccezione metodo è possibile aggiungere i nomi dei file o nomi dei moduli nella lista "nomi di file", se si desidera ignorare tutti i file indesiderati. Come ho ignorato il modulo Python pydev dal momento che sto usando pydev debugger in Eclipse.
Quanto sopra viene utilizzato nel mio modulo per uno scopo specifico. puoi modificarlo e usarlo per i tuoi moduli.
fonte
2016-11-25 07:12:11
La linea di sollevamento è nascosta quando viene sollevata dal codice C compilato (perché non c'è una linea di rilancio da mostrare). Le parti Python delle librerie standard mostreranno ancora l'istruzione raise in un traceback. –
Forse potresti hackerare 'sys.excepthook' per escludere l'ultima riga se si tratta di un' raise'. Ma generalmente non è possibile, ci si abitua. – delnan
Si potrebbe sempre sollevare un'eccezione utile. –