前言
在先前的一些章節里你已經執行了一些代碼,你一定遇到了程式“崩潰”或因未解決的錯誤而終止的情況,你會看到“跟蹤記錄(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 例外,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/53181.html
標籤:Python
