Vous pouvez créer votre propre crochet d'exception en python. ci-dessous est l'exemple de code que j'utilise.
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)
Et voici quelques lignes que j'ai utilisées dans mon code d'exception personnalisé.
sys.excepthook = exceptionHandler
raise Exception("My Custom error message.")
Dans l'exception de la méthode que vous pouvez ajouter des noms de fichiers ou noms de modules dans la liste « noms de fichiers » si vous voulez ignorer les fichiers indésirables. Comme j'ai ignoré le module pydeon pydev puisque j'utilise pydev debugger dans eclipse.
Ce qui précède est utilisé dans mon propre module dans un but spécifique. vous pouvez le modifier et l'utiliser pour vos modules.
La ligne de relèvement est masquée lorsqu'elle est levée à partir du code C compilé (car il n'y a pas de ligne de relèvement à afficher). Les parties Python des bibliothèques standard afficheront toujours l'instruction raise dans une traceback. –
Peut-être que vous pourriez bidouiller 'sys.excepthook' pour exclure la dernière ligne s'il s'agit d'un' raise'. Mais généralement pas possible, s'y habituer. – delnan
Vous pouvez toujours lever une exception utile. –