在學(xué)習(xí)Python技術(shù)的時(shí)候,我們經(jīng)常會(huì)遇到一些異常,例如導(dǎo)致程序在運(yùn)行過程中出現(xiàn)的中斷或退出,我們都稱之為異常,大多數(shù)的異常都不會(huì)被程序處理,而是以錯(cuò)誤信息的形式展現(xiàn)出來。本期Python培訓(xùn)教程就算教大家關(guān)于Python異常機(jī)制的內(nèi)容。
Python培訓(xùn)教程分享:Python異常機(jī)制,首先我們要理解什么叫做異常?
在程序運(yùn)行過程中,總會(huì)遇到各種各樣的問題和錯(cuò)誤。有些錯(cuò)誤是我們編寫代碼時(shí)自己造成的:比如語法錯(cuò)誤、調(diào)用錯(cuò)誤,甚至邏輯錯(cuò)誤。還有一些錯(cuò)誤,則是不可預(yù)料的錯(cuò)誤,但是完全有可能發(fā)生的:比如文件不存在、磁盤空間不足、網(wǎng)絡(luò)堵塞、系統(tǒng)錯(cuò)誤等等。
這些導(dǎo)致程序在運(yùn)行過程中出現(xiàn)異常中斷和退出的錯(cuò)誤,我們統(tǒng)稱為異常。大多數(shù)的異常都不會(huì)被程序處理,而是以錯(cuò)誤信息的形式展現(xiàn)出來。
異常的分類:
異常有很多種類型,Python內(nèi)置了幾十種常見的異常,無需特別導(dǎo)入,直接就可使用。
需要注意的是,所有的異常都是異常類,首字母是大寫的!
異常的危害:
如果程序中一旦出現(xiàn)了異常的語句代碼,則該異常就會(huì)立即中斷程序的運(yùn)行!
因此:為了保證程序的正常運(yùn)行,提高程序健壯性和可用性。我們應(yīng)當(dāng)盡量考慮全面,將可能出現(xiàn)的異常進(jìn)行處理,而不是留在那里,任由其發(fā)生。
基本語法:
異常的基本結(jié)構(gòu):try except
# (1)通用異常
try:
pass # 正常執(zhí)行語句
except Exception as ex:
pass # 異常處理語句
# (2)指定異常
try:
pass # 正常執(zhí)行語句
except <異常名>:
pass # 異常處理語句
#(3) 捕獲多個(gè)異常
# 捕獲多個(gè)異常有兩種方式,第一種是一個(gè)except同時(shí)處理多個(gè)異常,不區(qū)分優(yōu)先級(jí):
try:
pass # 正常執(zhí)行語句
except (<異常名1>, <異常名2>, ...):
pass # 異常處理語句
# 第二種是區(qū)分優(yōu)先級(jí)的:
try:
pass # 正常執(zhí)行語句
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)
機(jī)制說明:
首先,執(zhí)行try子句(在關(guān)鍵字try和關(guān)鍵字except之間的語句)
如果沒有異常發(fā)生,忽略except子句,try子句執(zhí)行后結(jié)束。
如果在執(zhí)行try子句的過程中發(fā)生了異常,那么try子句余下的部分將被忽略。如果異常那么對(duì)應(yīng)的except子句將被執(zhí)行。
在Python的異常中,有一個(gè)通用異常:Exception,它可以捕獲任意異常。
finally
try:
pass # 正常執(zhí)行語句
except Exception as e:
pass # 異常處理語句
finally:
pass # 無論是否發(fā)生異常一定要執(zhí)行的語句,比如關(guān)閉文件,數(shù)據(jù)庫或者socket
raise語句
很多時(shí)候,我們需要主動(dòng)拋出一個(gè)異常。Python內(nèi)置了一個(gè)關(guān)鍵字raise,可以主動(dòng)觸發(fā)異常。
raise可以拋出自定義異常,我們已將在前面看到了python內(nèi)置的一些常見的異常類型。大多數(shù)情況下,內(nèi)置異常已經(jīng)夠用了。但是有時(shí)候你還是需要自定義一些異常:自定義異常應(yīng)該繼承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的異常機(jī)制內(nèi)容,希望上面的介紹能夠給大家?guī)韼椭绻蠹蚁胍獙W(xué)習(xí)python或者是正在學(xué)習(xí)python知識(shí),但是苦于沒有人指導(dǎo),那么可以添加我們的qq群-790693323,點(diǎn)擊添加(加群備注:領(lǐng)資料)不僅可以領(lǐng)取python學(xué)習(xí)資料,并且群內(nèi)還有專業(yè)的老師定期解答大家的問題,想要學(xué)習(xí)python的小伙伴,不要錯(cuò)過。