一、問題
????異常處理是Python中一種用于處理程序運行時錯誤的機制。在編寫代碼時,可能會出現各種不可預測的情況,例如除零錯誤、文件不存在、網絡連接問題等等。為了確保程序能夠在出現錯誤時正常運行,您可以使用異常處理機制來捕獲和處理這些異常。Python中的異常處理使用try
和except
語句來實現。
二、try/except
捕獲指定異常
try:# 可能引發異常的代碼result = 10 / 0 # 除零錯誤
except ZeroDivisionError:# 處理異常的代碼print("除零錯誤發生")
在這個示例中,try
塊中包含可能引發異常的代碼,如果發生除零錯誤,將會觸發ZeroDivisionError
異常,然后控制流將轉移到except
塊中,其中包含了處理異常的代碼。
捕獲所有異常
try:# 可能引發異常的代碼result = 10 / 0 # 除零錯誤
except:# 處理異常的代碼print("異常發生")
在這個示例中,try
塊中包含可能引發異常的代碼,如果發生異常錯誤,然后控制流將轉移到except
塊中,其中包含了處理異常的代碼。
捕獲多個指定異常
try:<語句>
except (<異常名1>, <異常名2>, ...):print('異常說明')
在這個示例中,一個?except?同時處理多個異常,不區分異常的優先級且對所有類型的異常采取同樣的處理。
或
try:<語句>
except <異常名1>:print('異常說明1')
except <異常名2>:print('異常說明2')
except <異常名3>:print('異常說明3')
在這個示例中,執行 try 下的語句,如果引發異常,則執行過程會跳到第一個 except 語句。如果第一個 except 中定義的異常與引發的異常匹配,則執行該 except 中的語句。如果引發的異常不匹配第一個 except,則會搜索第二個 except,依次類推。
三、try/except/else
? ??在try
和except
之間添加一個else
塊,其中包含在沒有異常發生時要執行的代碼。
try:<語句>
except <異常名1>:print('異常說明1')
except <異常名2>:print('異常說明2')
else:<語句> # try語句中沒有異常則執行此段代碼
四、try/except/else/finally
????在try
和except
之后添加一個finally
塊,其中包含無論是否發生異常都要執行的代碼。
str1 = 'hello world'
try:int(str1)
except IndexError as e:pass
except KeyError as e:print(e)
except ValueError as e:print(e)
else:print('try內沒有異常')
finally:print('無論異常與否,都會執行我')
五、拋出自定義異常try/raise
自定義拋出異常
try:age = int(input("請輸入年齡:"))if age < 0:raise ValueError("年齡不能為負數")
except ValueError as e:print(e)
上述代碼中,如果輸入的年齡為負數,將拋出自定義的ValueError
異常。
本人讀研期間發表5篇SCI數據挖掘相關論文,現在某研究院從事數據算法相關科研工作,對Python有一定認知和理解,會結合自身科研實踐經歷不定期分享關于python、機器學習、深度學習等基礎知識與應用案例。
致力于只做原創,以最簡單的方式理解和學習,關注我一起交流成長。
1、關注“數據雜壇”公眾號,即可在后臺聯系我獲取相關數據集和源碼。
2、關注“數據雜壇”公眾號,點擊“領資料”即可免費領取資料書籍。
3、有論文指導相關需求,點擊“聯系我”添加作者微信直接交流。