二、try和except結構
try...一個except結構
這種結構是最常見, 也是最常用的結構
語法結構
try:
被監(jiān)控的可能引發(fā)異常的語句塊
exceptBaseException[ase]:
異常處理語句塊
注意事項:
- try 塊包含著可能引發(fā)異常的代碼, except 塊則用來捕捉和處理發(fā)生的異常
- 執(zhí)行的時候,如果 try 塊中沒有引發(fā)異常,則跳過 ecept 塊繼續(xù)執(zhí)行后續(xù)代碼
- 執(zhí)行的時候,如果 try 塊中發(fā)生了異常,則跳過 try 塊中的后續(xù)代碼,跳到相應的 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結構
try...except 的結構可以捕獲所有的異常,工作中也很常見. 但是,一般建議盡量捕獲可能出現(xiàn)的多個異常(按照先子類后父類的順序),并且針對性寫出異常處理代碼 為了避免遺漏可能出現(xiàn)的異常,可以在最后增加 BaseException 。結構如下
語法結構
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結構
在 try...except...else 結構的基礎上增加了 else 塊 .如果 try 塊中沒有拋出異常,則執(zhí)行else 塊. 如果 try 塊中拋出異常,則執(zhí)行 except 塊,不執(zhí)行 else 塊.
語法結構
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ù)相除,結果是:",result)
try...except...finally結構
try...except...finally 結構中, finally 塊無論是否發(fā)生異常都會被執(zhí)行, 通常用來釋放 try 塊中申請的資源
語法結構
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ù)相除,結果是:",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")
-
程序
+關注
關注
117文章
3788瀏覽量
81111 -
python
+關注
關注
56文章
4797瀏覽量
84775
發(fā)布評論請先 登錄
相關推薦
評論