一分鐘了解python的異常處理
Python是一種流行的編程語言,具有易讀性、易學(xué)性和大量庫支持等特點,在數(shù)據(jù)處理、機器學(xué)習(xí)、網(wǎng)絡(luò)爬蟲等領(lǐng)域中被廣泛應(yīng)用。在Python中,異常處理是一項非常重要的技術(shù)。本文將結(jié)合實例,介紹Python中異常處理的具體方法,幫助讀者更好地理解和運用這一技術(shù)。
?1. try-except語句
Python中的異常處理通常使用try-except語句,其中try語句塊包含可能引發(fā)異常的代碼,而except語句塊用于捕捉和處理異常。例如,下面的代碼嘗試打開一個不存在的文件,如果文件不存在則會引發(fā)FileNotFoundError異常,可以在except語句塊中處理該異常:
f = open("file.txt", "r")
except FileNotFoundError:
? ? print("文件不存在!")
2. try-except-else語句
除了try-except語句,Python還提供了try-except-else語句,它的執(zhí)行順序為:先執(zhí)行try語句塊中的代碼,如果沒有引發(fā)異常,則執(zhí)行else語句塊中的代碼,否則執(zhí)行except語句塊中的代碼。例如,下面的代碼嘗試將字符串轉(zhuǎn)換為整數(shù),如果轉(zhuǎn)換成功則輸出轉(zhuǎn)換結(jié)果,否則提示用戶輸入的不是數(shù)字:
num = int(input("請輸入一個數(shù)字:"))
except ValueError:
? ? print("輸入的不是數(shù)字!")
else:
? ? print("轉(zhuǎn)換結(jié)果是:", num)
3. try-except-finally語句
try-except-finally語句在try-except-else語句的基礎(chǔ)上增加了finally語句塊,它的執(zhí)行順序為:先執(zhí)行try語句塊中的代碼,如果沒有引發(fā)異常,則執(zhí)行else語句塊中的代碼,然后執(zhí)行finally語句塊中的代碼,如果引發(fā)了異常,則執(zhí)行except語句塊中的代碼,最后執(zhí)行finally語句塊中的代碼。例如,下面的代碼嘗試讀取文件內(nèi)容,無論是否發(fā)生異常,都會關(guān)閉文件:
f = open("file.txt", "r")
? ? content = f.read()
except FileNotFoundError:
? ? print("文件不存在!")
except:
? ? print("讀取文件出錯!")
else:
? ? print("文件內(nèi)容是:", content)
finally:
? ? f.close()
4. assert語句
除了try-except語句外,Python還提供了assert語句,用于檢測代碼中的錯誤,一旦檢測到錯誤就會引發(fā)AssertionError異常。例如,下面的代碼中使用assert語句檢測輸入的數(shù)字是否大于0:
num = int(input("請輸入一個大于0的數(shù)字:"))
assert num > 0, "輸入的數(shù)字不合法!"
print("輸入的數(shù)字是:", num)
當輸入的數(shù)字小于等于0時,就會引發(fā)AssertionError異常,并輸出錯誤提示。
?5. 自定義異常
在Python中,可以根據(jù)需要自定義異常類。例如,下面的代碼定義了一個自定義的異常類MyException,它用于表示輸入的數(shù)字不合法:
class MyException(Exception):
? ? def __init__(self, message):
? ? ? ? self.message = message
?try:
? ? num = int(input("請輸入一個大于0的數(shù)字:"))
? ? if num <= 0:
? ? ? ? raise MyException("輸入的數(shù)字不合法!")
except MyException as e:
? ? print(e.message)
else:
? ? print("輸入的數(shù)字是:", num)
這個例子中,如果輸入的數(shù)字小于等于0,則會引發(fā)MyException異常,并輸出錯誤提示。
?總之,Python中的異常處理是一項非常重要的技術(shù),可以幫助開發(fā)人員編寫更健壯、更可靠的應(yīng)用程序。通過本文的介紹和實例,讀者可以更好地理解和應(yīng)用Python中的異常處理技術(shù)。