什麼是異常?
執行的時候發生了錯誤,其實是**丟擲了乙個錯誤
異常也是乙個類
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 ...