python中的異常處理

2022-06-10 20:09:14 字數 1508 閱讀 3698

什麼是異常?

執行的時候發生了錯誤,其實是**丟擲了乙個錯誤

異常也是乙個類

baseexception是所有異常的基類

異常的處理方式,一般的格式

try:

**塊except 異常名字

**塊 #你要如何處理這個異常

else:

**塊 #沒有異常時執行,和except相當於if關係

舉個例子

file = open("test.txt", "r")

上面這個檔案找不到,立刻就丟擲異常filenotfounderror

try:

file = open("test.txt","r")

except:

print("發生異常了")

上面這種異常處理方式,有點簡單粗暴,具體什麼樣的異常並沒有體現出來。可以優化為如下:

try:

file = open("test.txt","r")

except filenotfounderror:

print("檔案沒有發現")

或者except filenotfounderror as e:

print("檔案沒有發現")

print(e)  #這裡的e就是前面出現filenotfounderror 這個異常時後面的描述

異常因為也是類,所以也存在父類和子類的關係,比如

try:

file = open("test.txt","r")

except exception:

print("發生異常了")

except filenotfounderror:

print("檔案沒有發現")

像上面的這種順序的安排就不合理,因為異常exception是filenotfounderror的父類,

因此如果它在上面先執行的話,它會先甄別到異常,這樣就旁路了後面的filenotfounderro異常處理,因此通常的異常的順序原則是,子類的異常放上面,父類的異常發下面,可以同ctrl+h檢視某一異常的父子類關係。

另乙個異常處理的原則是:

能處理的異常我們捕獲並處理,不能處理的,直接丟擲去。

前面的異常,只有發生,程式就會停止執行,那麼如果實現即使異常發生了,也要保證程式繼續執行呢?這裡還有乙個關鍵字finally

try:

**塊except:

**塊finally:

print("finally無論是否有異常發生,這裡的**都會被執行")

# 手動丟擲異常

raise exception("手動丟擲異常")  #括號裡是異常資訊說明

# 自定義異常

class my_exception(baseexception):

pass

raise my_exception("丟擲乙個自己定義的異常")

try:

raise my_exception("丟擲乙個自己定義的異常")

except my_exception as e:

print(e)

python 中的異常處理

python的異常處理能力是很強大的,可向使用者準確反饋出錯資訊。在python中,異常也是物件,可對它進行操作。所有異常都是基類exception的成員。所有異常都從基類exception繼承,而且都在exceptions模組中定義。python自動將所有異常名稱放在內建命名空間中,所以程式不必匯...

Python中的異常處理

當python檢測到乙個錯誤時,直譯器就無法繼續執行了,反而出現了一些錯誤的提示,這就是所謂的 異常 看如下示例 try print test1 open 123.txt r print test2 except ioerror pass此時可以正常執行,執行結果為 test1 說明 try exc...

python中的異常處理

python使用異常物件來表示異常狀態,並在遇到錯誤時引發異常,異常物件未被處理時,程式將終止並顯示一條錯誤資訊。raise語句 自定義異常類 class somecustomexception exception pass class myexceptionclass exception def ...