Python基礎入門知識點——Python中的異常

前言

在先前的一些章節里你已經執行了一些程式碼,你一定遇到了程式「崩潰」或因未解決的錯誤而終止的情況。你會看到「跟蹤記錄(traceback)」消息以及隨後解釋器向你提供的資訊,包括錯誤的名稱、原因和發生錯誤的行號。不管你是通過 Python 解釋器執行還是標準的腳本執行,所有的錯誤都符合相似的格式,這提供了一個一致的錯誤介面。所有錯誤,無論是語意上的還是邏輯上的,都是由於和 Python 解釋器不相容導致的,其後果就是引發異常。

我們來看幾個異常的例子。

NameError

嘗試訪問一個未申明的變數

 

NameError 表示我們訪問了一個沒有初始化的變數。

在 Python 解釋器的符號表沒有找到那個那個被調用的變數。任何可訪問的變數必須先定義才能使用,訪問變數需要由解釋器進行搜索,如果請求的名字沒有在任何名稱空間里找到,那麼將會生成一個NameError 異常。

ZeroDivisionError

除數為零

 

任何數值被零除都會導致一個 ZeroDivisionError 異常。

SyntaxError

Python解釋器語法錯誤

 

SyntaxError 代表Python程式碼中有一個不正確的結構,在它改正之前程式無法執行。

IndexError

請求的索引超出序列範圍

 

IndexError 在你嘗試使用一個超出範圍的值索引序列時引發。

KeyError

請求一個不存在的字典關鍵字

 

映射對象,例如字典,是依靠關鍵字(key)訪問數據值的。如果使用錯誤的或是不存在的鍵請求字典就會引發一個KeyError異常。

IOError

操作的文件不存在

 

類似嘗試打開一個不存在的磁碟文件一類的操作會引發一個作業系統輸入/輸出(I/O)錯誤。任何類型的I/O錯誤都會引發IOError異常。

AttributeError

嘗試訪問未知的對象屬性

 

在我們的例子中,我們在 myInst.bar 儲存了一個值,也就是實例 mylnst 的 bar 屬性。屬性被定義後,我們可以使用熟悉的點/屬性操作符訪問它,但如果是沒有定義屬性,例如我們訪問 foo 屬性,將導致一個 AttributeError 異常。

Tags: