Python 3 中使用異常鏈有標準方式嗎?
在處理一個異常“A”時,可能會發生另一個異常“B”。在 Python 2.0 版本中,如果發生這種情況,異常 B 將向外傳播,異常 A 將丟失。瞭解這兩個異常對於除錯問題很有用。
有時,異常處理程式故意重新引發異常會很有用,以提供額外的資訊或將異常轉換為另一種型別。__cause__ 屬性提供了一種顯式的方式來記錄異常的直接原因。
異常連結僅在 Python 3 中可用。Python 3 有 raise ... from 子句來連結異常。我們使用 raise..from 子句重寫給定的程式碼,如下所示
try: s = {‘a’:1, ‘b’:2}['c'] except KeyError as e: raise ValueError('failed') from e
Python 3 將預設顯示在異常處理期間發生的全部異常,如下所示
Traceback (most recent call last): File "source_file.py", line 2, in <module> s = {'a':1, ‘b’:2}['c'] KeyError: 'c'
上述異常是以下異常的直接原因
Traceback (most recent call last): File "source_file.py", line 4, in <module> raise ValueError('failed') from e ValueError: failed
廣告