從此告別程序崩潰:Python 中的異常處理秘籍
在Python編程中,正確處理異常是編寫(xiě)健壯和可靠代碼的關(guān)鍵。異常處理讓你能夠應(yīng)對(duì)程序運(yùn)行時(shí)可能出現(xiàn)的錯(cuò)誤,確保程序的穩(wěn)定性和用戶(hù)體驗(yàn)。本文將帶你從入門(mén)到精通學(xué)習(xí)Python中的異常處理。
異常處理基礎(chǔ)
Python使用try和except語(yǔ)句捕獲和處理異常。
示例1:捕獲異常
基本的異常捕獲示例,防止程序因錯(cuò)誤而中斷。
# 嘗試執(zhí)行可能引發(fā)異常的代碼
try:
# 故意造成一個(gè)除以零的錯(cuò)誤
result = 10 / 0
except ZeroDivisionError:
print("發(fā)生錯(cuò)誤:不能除以0")
示例2:捕獲多個(gè)異常
一個(gè)try塊可以捕獲多個(gè)異常,并分別對(duì)它們進(jìn)行處理。
try:
# 可能會(huì)拋出多種類(lèi)型的異常
# result = 10 / 0
result = '2' + 2
except ZeroDivisionError:
print("不能除以0")
except TypeError:
print("類(lèi)型錯(cuò)誤,不能將字符串和數(shù)字相加")
異常的其他關(guān)鍵字
除了try和except,else和finally也是處理異常時(shí)的重要關(guān)鍵字。
示例3:使用else
如果try塊沒(méi)有引發(fā)異常,可以執(zhí)行else塊。
try:
print("嘗試執(zhí)行的代碼")
except ZeroDivisionError:
print("除以0的錯(cuò)誤")
else:
print("沒(méi)有發(fā)生任何異常")
示例4:使用finally
無(wú)論是否捕獲到異常,finally塊的內(nèi)容都會(huì)執(zhí)行,常用于執(zhí)行清理工作。
try:
print("嘗試執(zhí)行的代碼")
except ZeroDivisionError:
print("除以0的錯(cuò)誤")
finally:
print("無(wú)論是否發(fā)生異常,都會(huì)執(zhí)行的代碼")
異常的拋出
使用raise語(yǔ)句手動(dòng)拋出異常。
示例5:拋出異常
在某些情況下,當(dāng)檢測(cè)到特定條件時(shí),拋出異??赡苁怯杏玫?。
x = -1
if x < 0:
# 拋出異常
raise Exception("抱歉,沒(méi)有負(fù)數(shù)")
自定義異常
通過(guò)繼承Exception類(lèi),你可以創(chuàng)建自定義的異常。
示例6:自定義異常類(lèi)
自定義異常提供了更多的靈活性和清晰的錯(cuò)誤信息。
# 定義一個(gè)自定義異常
class ValueTooHighError(Exception):
pass
def test_value(x):
if x > 100:
raise ValueTooHighError("值太大了")
try:
test_value(200)
except ValueTooHighError as e:
print(e)
小結(jié)
正確地處理異常對(duì)于編寫(xiě)可靠和用戶(hù)友好的Python程序至關(guān)重要。通過(guò)使用try、except、else、finally以及raise,你可以控制程序在面臨不同錯(cuò)誤時(shí)的行為,并提供有用的反饋。自定義異常進(jìn)一步增強(qiáng)了這種控制力,允許你創(chuàng)建具有特定含義的錯(cuò)誤類(lèi)型。希望通過(guò)本文,你能夠掌握Python中異常處理的藝術(shù),編寫(xiě)出更加健壯和可靠的代碼。繼續(xù)探索,享受編程帶來(lái)的樂(lè)趣吧!