在學習Python技術的時候,我們經常會遇到一些異常,例如導致程序在運行過程中出現的中斷或退出,我們都稱之為異常,大多數的異常都不會被程序處理,而是以錯誤信息的形式展現出來。本期Python培訓教程就算教大家關于Python異常機制的內容。
Python培訓教程分享:Python異常機制,首先我們要理解什么叫做異常?
在程序運行過程中,總會遇到各種各樣的問題和錯誤。有些錯誤是我們編寫代碼時自己造成的:比如語法錯誤、調用錯誤,甚至邏輯錯誤。還有一些錯誤,則是不可預料的錯誤,但是完全有可能發生的:比如文件不存在、磁盤空間不足、網絡堵塞、系統錯誤等等。
這些導致程序在運行過程中出現異常中斷和退出的錯誤,我們統稱為異常。大多數的異常都不會被程序處理,而是以錯誤信息的形式展現出來。
異常的分類:
異常有很多種類型,Python內置了幾十種常見的異常,無需特別導入,直接就可使用。
需要注意的是,所有的異常都是異常類,首字母是大寫的!
異常的危害:
如果程序中一旦出現了異常的語句代碼,則該異常就會立即中斷程序的運行!
因此:為了保證程序的正常運行,提高程序健壯性和可用性。我們應當盡量考慮全面,將可能出現的異常進行處理,而不是留在那里,任由其發生。
基本語法:
異常的基本結構:try except
# (1)通用異常
try:
pass # 正常執行語句
except Exception as ex:
pass # 異常處理語句
# (2)指定異常
try:
pass # 正常執行語句
except <異常名>:
pass # 異常處理語句
#(3) 捕獲多個異常
# 捕獲多個異常有兩種方式,第一種是一個except同時處理多個異常,不區分優先級:
try:
pass # 正常執行語句
except (<異常名1>, <異常名2>, ...):
pass # 異常處理語句
# 第二種是區分優先級的:
try:
pass # 正常執行語句
except <異常名1>:
pass # 異常處理語句1
except <異常名2>:
pass # 異常處理語句2
except <異常名3>:
pass # 異常處理語句3
# 異常嵌套
try:
try:
with open("abc") as f:
pass
except NameError as e:
print(e)
except OSError as e:
print("OSError:",e.strerror)
機制說明:
首先,執行try子句(在關鍵字try和關鍵字except之間的語句)
如果沒有異常發生,忽略except子句,try子句執行后結束。
如果在執行try子句的過程中發生了異常,那么try子句余下的部分將被忽略。如果異常那么對應的except子句將被執行。
在Python的異常中,有一個通用異常:Exception,它可以捕獲任意異常。
finally
try:
pass # 正常執行語句
except Exception as e:
pass # 異常處理語句
finally:
pass # 無論是否發生異常一定要執行的語句,比如關閉文件,數據庫或者socket
raise語句
很多時候,我們需要主動拋出一個異常。Python內置了一個關鍵字raise,可以主動觸發異常。
raise可以拋出自定義異常,我們已將在前面看到了python內置的一些常見的異常類型。大多數情況下,內置異常已經夠用了。但是有時候你還是需要自定義一些異常:自定義異常應該繼承Exception類,直接繼承或者間接繼承都可以,例如:
# 1.用戶自定義異常類型
class TooLongExceptin(Exception):
"this is user's Exception for check the length of name "
def __init__(self, len):
self.len = len
def __str__(self):
return "輸入姓名長度是" + str(self.len) + ",超過長度了"
try:
name = input("enter your name:")
if len(name) > 5:
raise TooLongExceptin(len(name))
else:
print(name)
except TooLongExceptin as error: # 這里異常類型是用戶自定義的
print("打印異常信息:", error)
以上就是為大家介紹的Python的異常機制內容,希望上面的介紹能夠給大家帶來幫助,如果大家想要學習python或者是正在學習python知識,但是苦于沒有人指導,那么可以添加我們的qq群-790693323,點擊添加(加群備注:領資料)不僅可以領取python學習資料,并且群內還有專業的老師定期解答大家的問題,想要學習python的小伙伴,不要錯過。