2011-06-20 16 views
5

Powiel możliwe:
Don't show Python raise-line in the exception stackPodnoszenie wyjątków bez "podnoszenia" w systemie śledzenia trasy?

Wbudowany wyjątkami jak NameError itp dać mi traceback do punktu w moim kodu, gdzie nastąpiło wyjątkiem. Pracuję nad modułem narzędziowym i budzi mnie to, że jeśli kod używający mojego modułu podnosi i wyklucza ostatnią rzecz w traceback przed wyjątkiem jest mój raise WhateverError.

Czy istnieje sposób podniesienia wyjątku w python i czy tracback zatrzyma jedną klatkę w górę o wyjątki wbudowane (bez pisania kodu c)?

Odpowiedz

3

Pure Python nie zapewnia sposobu mutowania istniejących obiektów traceback ani tworzenia dowolnych obiektów traceback.

>>> exc_info[2].tb_next = None 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: readonly attribute 

>>> types.TracebackType() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: cannot create 'traceback' instances 

Zauważ, że gdyby to było możliwe, aby to zrobić nie tylko wpływają na formatowanie domyślne tracebacks, można również wpływać na zdolności ludzi do korzystania z WPB na pośmiertne błędy w module użytkowego.

Jeśli traceback jest rejestrowany lub w inny sposób sformatowany przez moduł narzędziowy, nie można po prostu uwzględnić klatek, które uważasz za nieinteresujące w wynikach. Na przykład moduł biblioteki standardowej unittest wykonuje to podczas zgłaszania błędów występujących podczas uruchamiania testów.

Powiązane problemy