Python 有兩種錯誤很容易辨認:語法錯誤和異常。
Python assert(斷言)用於判斷一個表達式,在表達式條件爲 false 的時候觸發異常。
異常處理
try/except
異常捕捉可以使用 try/except 語句
try 語句按照如下方式工作:
- 首先,執行 try 子句(在關鍵字 try 和關鍵字 except 之間的語句)
- 如果沒有異常發生,忽略 except 子句,try 子句執行後結束
- 如果在執行 try 子句的過程中發生了異常,那麼 try 子句餘下的部分將被忽略。如果異常的類型和 except 之後的名稱相符,那麼對應的 except 子句將被執行
- 如果一個異常沒有與任何的 excep 匹配,那麼這個異常將會傳遞給上層的 try 中
- 一個 try 語句可能包含多個except子句,分別來處理不同的特定的異常。最多隻有一個分支會被執行
- 處理程序將只針對對應的 try 子句中的異常進行處理,而不是其他的 try 的處理程序中的異常
一個except子句可以同時處理多個異常,這些異常將被放在一個括號裏成爲一個元組:
except (RuntimeError, TypeError, NameError):
pass
最後一個except子句可以忽略異常的名稱,它將被當作通配符使用。你可以使用這種方法打印一個錯誤信息,然後再次把異常拋出。
try/except…else
try/except 語句還有一個可選的 else 子句,如果使用這個子句,那麼必須放在所有的 except 子句之後。 else 子句將在 try 子句沒有發生任何異常的時候執行。
使用 else 子句比把所有的語句都放在 try 子句裏面要好,這樣可以避免一些意想不到,而 except 又無法捕獲的異常。
try-finally 語句
try-finally 語句無論是否發生異常都將執行最後的代碼
拋出異常
Python 使用 raise 語句拋出一個指定的異常,raise語法格式如下:
raise [Exception [, args [, traceback]]]