1. 程式人生 > >Python3.2 官方文檔翻譯--錯誤與異常

Python3.2 官方文檔翻譯--錯誤與異常

content 實用 就會 同方 exce 語法錯誤 art err new

第六章?錯誤和異常

直到如今錯誤信息還沒有被涉及到。但你假設已經嘗試了實例你可能已經看到一些相關信息。

python中至少有兩種不同的錯誤:syntax?errors?exceptions

6.1?語法錯誤(syntax?errors

???語法錯誤,也就是編譯錯誤,當你開始學習python時,這樣的錯誤可能是你最常見的抱怨。

>>>?while?True?print(Hello?world)

File?"<stdin>",?line?1,?in??

while?True?print(Hello?world)

^

SyntaxError:?invalid?syntax

?

語法分析器會知道出錯的語句,並在檢查到錯誤的位置前面顯示一個小“箭頭”。

錯誤是因為箭頭編輯的字符引起的或者至少探測到的。在樣例中。在函數print()上探測到錯誤,因為在它前面少了一個:.從文本輸入情況下,?文件名和行數將會被打印出來,因此在你能夠知道從哪兒定位錯誤。

8.2?異常

假設語句和表達式在語法上是正確的,當嘗試去執行它時可能會產生一個錯誤。在執行過程中被檢測到的錯誤稱為異常和程序不會無條件的崩潰。

接下來你會學到在python程序中怎樣處理異常。

可是,很多異常不能被程序處理。就會導致例如以下的錯誤信息:

>>>?10*(1/0)

Traceback?(most?recent?call?last):

File?"<stdin>",?line?1,?in??

ZeroDivisionError:?int?division?or?modulo?by?zero

>>>?4?+?spam*3

Traceback?(most?recent?call?last):

File?"<stdin>",?line?1,?in??

NameError:?name?spam’?is?not?defined

>>>?2’?+?2

Traceback?(most?recent?call?last):

File?"<stdin>",?line?1,?in??

TypeError:?Cant?convert?int’?object?to?str?implicitly

錯誤信息的最後一行描寫敘述產生錯誤的原因,異常產生有不同方式而且錯誤類型會作為信息的一部分打印出來:?在實例中錯誤信息是?ZeroDivisionError,NameErrorTypeError

?作為錯誤類型打印出來的字符串是出如今內置異常的名稱。

這對內置異常是正常的結果。但對於用戶自己定義異常(雖然這是一個實用的規範)就不可而知了。標準異常的名稱都是內置的標識符。(這不是保留keyword)。

剩下的行信息基於異常類型和產生原因提供更加具體信息。

錯誤信息的前面部分會顯示異常發生的上下文。而且以棧的形式打印出來。總的來說,它包括一個包括源碼的堆棧的列表;可是它不會顯示從標準行讀取的信息。

Bltin-exception顯示內置全部的異常和全部的信息。

Python3.2 官方文檔翻譯--錯誤與異常