1 回答

TA貢獻(xiàn)1836條經(jīng)驗 獲得超5個贊
在處理異常時,可以將其賦值給一個變量,例如:
except AssertionError as aerr:
saved_exception = aerr
您以后可以訪問它,例如:
print(saved_exception)
對于您的代碼,這為您提供了沒有兩個變量的選項,而isError不僅僅是使用saved_exception = None和稍后測試if saved_exception is not None: ...
不確定為以后保存異常(將其用作傳遞信息的通用接口)有多大用處。也許值得重新考慮一下。
N Chauhan在評論中也提出了一個很好的觀點,即AssertionError不是非常適合用來傳達(dá)此類信息的異常。
對于您更新的問題。如果你想打印回溯是你會在引發(fā)異常時看到它,最直接的可能是保存異常信息并使用print_exception()(或它的format_exception朋友):
except ValueError:
save_exc_info = sys.exc_info()
...
traceback.print_exception(*save_exc_info)
您也可以從/使用保存的異常中提取相同的信息,*save_exc_info也可以是:(type(saved_exception), saved_exception, saved_exception.__traceback__對于第一個示例中的保存異常)。
添加回答
舉報