python學習筆記(六) 異常處理

2022-09-07 08:00:13 字數 1960 閱讀 5725

在 python 中,通過兩個重要的功能來處理程式在執行**現的異常和錯誤。其一是本文提到的異常處理,其二是斷言(assertions)。

python中,所有的異常均派生自 baseexception(所有異常的基類)類的例項,系統提供的異常類稱為內建異常,它們可通過直譯器或內建函式來生成。並且都會具有乙個提示導致錯誤詳細原因的「關聯值」。 這可以是乙個字串或由多個資訊項(例如乙個錯誤碼和乙個解釋錯誤的字串)組成的元組。 關聯值通常會作為引數被傳遞給異常類的構造器。

1、常見的處理異常的方式:

try

: 可能出錯的**塊

except 錯誤型別:

異常處理語句

除此之外,還有以下格式:1.

try...

except結構 異常處理結構中最常見也最基本的結構。2.

try...

except..

.else結構 帶else子句的異常處理結構,如果沒有異常則執行else語句。3.

try...

except..

.except..

.結構,多個except語句,同一段**可能會丟擲多個異常。4.

try...

except..

.finally結構,finally語句不論是否發生異常都會執行。

2、使用 except 捕獲異常

一般我們在 try 語句中放入可能會發生異常的**,一旦發生異常就會跳轉至 except 語句處,與相應的錯誤型別進行匹配。在找到對應錯誤型別後,執行對應語句處理異常。

exception 類是常規錯誤的基類。

a=

10b=

0try

: r=a/b

print

("a/b="

+r)except exception as e:

print

("異常:除數為0"

)輸出:

異常:除數為0

多重 except 捕獲不同種類異常與else 和 finally 的使用。
a=

10b=

0try

: r=a//b

print

(r)except typeerror as e:

print

("這是:型別錯誤"

)except zerodivisionerror:

print

("這是:0判斷"

)else

:# 如果不發生錯誤,執行

print

("這是:else"

)finally

:# 無論是否發生錯誤,一定會執行

print

("這是:finally"

)輸出:

這是:0判斷

這是:finally

3、自定義錯誤型別

內建異常類可以被子類繼承以定義新的異常。即我們可以從 exception 類或它的某個子類派生出新的異常型別。

# 自定義錯誤型別

class

err(exception)

:def

__init__

(self,msg)

: self.msg=msg

try:

raise err(

"這是自定義錯誤"

)# 丟擲異常,類似c++中的throw

except err as e:

print

(e)輸出:

這是自定義錯誤

基類

1. 下列異常主要被用作其他異常的基類。

具體異常:

2.以下異常屬於經常被引發的異常。

os 異常

下列異常均為 oserror 的子類,它們將根據系統錯誤**被引發。

警告以上內容只列出部分,詳情請參考 python 官方文件。

附:內建異常:

python學習筆記 異常處理

try 多個except else finally語句 try 塊是此語句的主要動作,嘗試執行的 except分句捕獲且處理try 塊內引發的異常,else分句是try沒有發生異常時要執行的處理器。finally語句不管異常是否發生都會去執行的,如果沒有異常發生,執行完try 塊後執行finally...

python學習筆記 異常處理

什麼是異常 異常就是程式執行時發生錯誤的訊號 在程式出現錯誤時,則會產生乙個異常,若程式沒有處理它,則會 丟擲該異常,程式的執行也隨之終止 語法錯誤 不按照語言基準來寫 print hello 邏輯錯誤 res 1 0 zerodivisionerror l 1.2 l 10 indexerror ...

python學習筆記 異常處理

assertionerror 斷言語句失敗 attributeerror 嘗試訪問未知的物件屬性 indexerror 索引超出序列的範圍 keyerror 字典中查詢乙個不存在的關鍵字 nameerror 嘗試訪問乙個不存在的變數 oserror 作業系統產生的異常 syntaxerror pyt...