二、try和except結(jié)構(gòu)
try...一個except結(jié)構(gòu)
這種結(jié)構(gòu)是最常見, 也是最常用的結(jié)構(gòu)
語法結(jié)構(gòu)
try:
被監(jiān)控的可能引發(fā)異常的語句塊
exceptBaseException[ase]:
異常處理語句塊
注意事項:
- try 塊包含著可能引發(fā)異常的代碼, except 塊則用來捕捉和處理發(fā)生的異常
- 執(zhí)行的時候,如果 try 塊中沒有引發(fā)異常,則跳過 ecept 塊繼續(xù)執(zhí)行后續(xù)代碼
- 執(zhí)行的時候,如果 try 塊中發(fā)生了異常,則跳過 try 塊中的后續(xù)代碼,跳到相應(yīng)的 except 塊中處理異常. 異常處理完后,繼續(xù)執(zhí)行后續(xù)代碼
實操代碼
defa():
print("runina()start!")
try:
num=1/0
exceptBaseExceptionase:
print("捕獲異常之后執(zhí)行此處代碼")
print("runina()end!")
defb():
print("runinb()start!")
a()
print("runinb()end!")
defc():
print("runinc()start!")
b()
print("runinc()end!")
print("step1")
c()
print("step2")
try...多個except結(jié)構(gòu)
try...except 的結(jié)構(gòu)可以捕獲所有的異常,工作中也很常見. 但是,一般建議盡量捕獲可能出現(xiàn)的多個異常(按照先子類后父類的順序),并且針對性寫出異常處理代碼 為了避免遺漏可能出現(xiàn)的異常,可以在最后增加 BaseException 。結(jié)構(gòu)如下
語法結(jié)構(gòu)
try:
被監(jiān)控的、可能引發(fā)異常的語句塊
exceptException1:
處理Exception1的語句塊
exceptException2:
處理Exception2的語句塊
[...]
except BaseException:
處理可能遺漏的異常的語句塊
實操代碼
try:
a=input("請輸入被除數(shù):")
b=input("請輸入除數(shù):")
result=float(a)/float(b)
print(result)
exceptZeroDivisionError:
print("異常:0不能做除數(shù)")
exceptValueError:
print("異常:輸入的必須是數(shù)值類型!")
exceptBaseExceptionase:
print(e)
print(type(e))
try...except...else結(jié)構(gòu)
在 try...except...else 結(jié)構(gòu)的基礎(chǔ)上增加了 else 塊 .如果 try 塊中沒有拋出異常,則執(zhí)行else 塊. 如果 try 塊中拋出異常,則執(zhí)行 except 塊,不執(zhí)行 else 塊.
語法結(jié)構(gòu)
try:
被監(jiān)控的可能引發(fā)異常的語句塊
exceptBaseException[ase]:
異常處理語句塊
else:
沒有拋出異常時執(zhí)行的語句塊
實操代碼
try:
a=input("請輸入被除數(shù):")
b=input("請輸入除數(shù):")
result=float(a)/float(b)
exceptBaseExceptionase:
print(e)
else:
print("兩數(shù)相除,結(jié)果是:",result)
try...except...finally結(jié)構(gòu)
try...except...finally 結(jié)構(gòu)中, finally 塊無論是否發(fā)生異常都會被執(zhí)行, 通常用來釋放 try 塊中申請的資源
語法結(jié)構(gòu)
try:
被監(jiān)控的可能引發(fā)異常的語句塊
exceptBaseException[ase]:
異常處理語句塊
finally:
無論是否捕獲異常都會執(zhí)行的語句塊
實操代碼
try:
a=input("請輸入被除數(shù):")
b=input("請輸入除數(shù):")
result=float(a)/float(b)
exceptBaseExceptionase:
print(e)
else:
print("兩數(shù)相除,結(jié)果是:",result)
finally:
print("我是finally中的語句, 無論發(fā)生異常與否, 都執(zhí)行!")
實操代碼2
try:
f=open("d:/a.txt",'r')
print(content)
exceptBaseExceptionase:
print(e)
finally:
f.close()#釋放資源. 此處也可能會發(fā)生異常。若發(fā)生異常,則程序終止,不會繼續(xù)往下執(zhí)行
print("step4")
-
程序
+關(guān)注
關(guān)注
117文章
3787瀏覽量
81060 -
python
+關(guān)注
關(guān)注
56文章
4797瀏覽量
84694
發(fā)布評論請先 登錄
相關(guān)推薦
評論