Python異常的處理和檢測

2022-09-01 10:54:13 字數 1728 閱讀 9938

在python程式執行過程中發生的異常可以通過try語句來檢測,可以把需要檢測的語句放置在try塊裡面,try塊裡面的語句發生的異常都會被try語句檢測到,並丟擲異常給python直譯器,python直譯器會尋找能處理這一異常的**,並把當前異常交給其處理。這一過程稱為捕獲異常。如果python直譯器找不到處理該異常的**,python直譯器會終止該程式的執行。

try語句有兩種形式:一種是try—except;一種是try—finally。也可以是try—except—finally的組合。乙個try語句可以對應乙個或多個except語句,但只能對應乙個finally子句。finally子句的作用是不管異常有沒有發生,該語句塊的**都會被執行。這樣就可以把一些不管異常有沒有發生,都必須要執行的**放置到finally子句塊中。

使用try—except的語法規則如下:

我們用乙個例子來說明try—except是如何工作的。案例程式很簡單,要求使用者輸入乙個數字,然後把使用者輸入的數字輸出到螢幕上。為了更好說明try—except捕獲異常的作用,下面的**沒有使用try—except語句。

當使用者輸入的不是數字時,上面的程式將會引發valueerror異常,程式被終止。如下圖所示。

我們當然不希望發生上面的異常,但又無法預防使用者輸入錯誤的資料。在這種情況下,可以使用try—except語句來捕獲因使用者輸入錯誤的資料而發生的異常,然後對異常進行處理就可以了。

上面的**新增了try—except語句,用於對異常進行處理。把需要檢測發生異常的語句放置在try子句塊中,把需要處理異常的語句放置在except子句塊中。except後面的valueerror是python提供的標準異常名稱,當傳入函式的引數無效時,該異常被丟擲。python提供了幾十個標準異常名稱,用於處理在不同情況下發生的異常。

當不清楚異常需要使用哪個標準異常名稱時,可以直接使用baseexception異常名稱或exception異常名稱,baseexception異常是所有異常的基類,exception異常是常規錯誤的基類。下表列出了python提供的標準異常的名稱。

**1 python提供的標準異常名稱列表

try語句塊的任何一條語句丟擲異常時,後面的語句將不再執行,此時的控制權已經移交給except語句塊。但在一些特殊情況下,這樣的處理方式會存在一些問題,例如在一段開啟檔案並寫入資料到檔案的**中,對檔案的開啟、寫入、關閉等操作**都放置在try語句塊中,當執行寫入檔案的操作丟擲異常時,後面關閉檔案的語句將不會被執行,從而導致一些系統資源不能被及時釋放。在這樣的情況下,可以使用finally子句來解決這些問題。

在上面的**中,檔案關閉語句被放置在finally語句塊中,不管try語句塊中**是否發生異常,開啟的檔案都將會關閉。

Python的異常檢測和處理

exception 捕獲所有錯誤 nameerror 變數沒有被定義 syntaxerror 語法錯誤 indexerror list超出索引範圍 keyerror 字典超出索引範圍 valueerror 值錯誤 attributeerror 屬性錯誤 菜鳥 官網 traceback 會追蹤異常,一...

Python異常和異常處理

python異常和異常處理 2017年12月20日 22 17 08 megustas jjc 閱讀數 114 標籤 python 異常處理 更多 個人分類 python while true filename raw input please input a file to open try da...

Python異常處理和異常型別

try some functions.except exception,e print e try some functions.except exception as e print e 注意這裡exception,e變成了exception as e 1.nameerror 嘗試訪問乙個未申明的...