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