深入理解python try異常處理機(jī)制
更新時(shí)間:2016年06月01日 15:51:44 投稿:jingxian
下面小編就為大家?guī)?lái)一篇深入理解python try異常處理機(jī)制。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
深入理解python try異常處理機(jī)制
#python的try語(yǔ)句有兩種風(fēng)格
#一:種是處理異常(try/except/else)
#二:種是無(wú)論是否發(fā)生異常都將執(zhí)行最后的代碼(try/finally)
try/except/else風(fēng)格
try:
<語(yǔ)句> #運(yùn)行別的代碼
except <名字>:
<語(yǔ)句> #如果在try部份引發(fā)了'name'異常
except <名字>,<數(shù)據(jù)>:
<語(yǔ)句> #如果引發(fā)了'name'異常,獲得附加的數(shù)據(jù)
else:
<語(yǔ)句> #如果沒(méi)有異常發(fā)生
#try的工作原理是,當(dāng)開(kāi)始一個(gè)try語(yǔ)句后,python就在當(dāng)前程序的上下文中作標(biāo)記,這樣當(dāng)異常出現(xiàn)時(shí)就可以回到這里,try子句先執(zhí)行,接下來(lái)會(huì)發(fā)生什么依賴(lài)于執(zhí)行時(shí)是否出現(xiàn)異常。
#1、如果當(dāng)try后的語(yǔ)句執(zhí)行時(shí)發(fā)生異常,python就跳回到try并執(zhí)行第一個(gè)匹配該異常的except子句,異常處理完畢,控制流就通過(guò)整個(gè)try語(yǔ)句(除非在處理異常時(shí)又引發(fā)新的異常)。
#2、如果在try后的語(yǔ)句里發(fā)生了異常,卻沒(méi)有匹配的except子句,異常將被遞交到上層的try,或者到程序的最上層(這樣將結(jié)束程序,并打印缺省的出錯(cuò)信息)。
#3、如果在try子句執(zhí)行時(shí)沒(méi)有發(fā)生異常,python將執(zhí)行else語(yǔ)句后的語(yǔ)句(如果有else的話(huà)),然后控制流通過(guò)整個(gè)try語(yǔ)句。
try/finally風(fēng)格
try:
<語(yǔ)句>
finally:
<語(yǔ)句> #退出try時(shí)總會(huì)執(zhí)行
python總會(huì)執(zhí)行finally子句,無(wú)論try子句執(zhí)行時(shí)是否發(fā)一異常。
1、如果沒(méi)有發(fā)生異常,python運(yùn)行try子句,然后是finally子句,然后繼續(xù)。
2、如果在try子句發(fā)生了異常,python就會(huì)回來(lái)執(zhí)行finally子句,然后把異常遞交給上層try,控制流不會(huì)通過(guò)整個(gè)try語(yǔ)句。
當(dāng)你想無(wú)論是否發(fā)生異常都確保執(zhí)行某些代碼時(shí),try/finally是有用的。
#這個(gè)在打開(kāi)文件的時(shí)候有用 finally總是在最后close()文件
try 語(yǔ)句子句形式表
except: 捕獲所有異常
except name: 只捕獲特定的異常
except name,value: 捕獲異常和它的附加數(shù)據(jù)(將異常的信息保存到value,)
except (name1,name2): 捕獲任何列出的異常
else: 如果沒(méi)有異常
finally: 總是執(zhí)行
>>> try:
f = open('file.txt')
except IOError, e:
print e
else:
print 'wrong'
[Errno 2] No such file or directory: 'file.txt'
最新的python版本 支持try/except/finally
try: 1:如果x沒(méi)有異常,執(zhí)行z,i
x 2:如果x有異常, 一:如果except捕捉到異常則執(zhí)行y,i
except(name): 二:沒(méi)捕捉到,執(zhí)行i,然后返回內(nèi)置異常處理
y
else:
z
finally:
i
以上這篇深入理解python try異常處理機(jī)制就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python連接MySQL數(shù)據(jù)庫(kù)的四種方法
用?Python?連接到?MySQL?數(shù)據(jù)庫(kù)的方法不是很系統(tǒng),實(shí)際中有幾種不同的連接方法,而且不是所有的方法都能與不同的操作系統(tǒng)很好地配合,本文涵蓋了四種方法,你可以用它們來(lái)連接你的Python應(yīng)用程序和MySQL,需要的朋友可以參考下2024-08-08
python中np.zeros_like函數(shù)用法詳解
這篇文章主要介紹了python中np.zeros_like函數(shù)用法的相關(guān)資料,np.zeros_like是?NumPy?庫(kù)中的一個(gè)函數(shù),用于創(chuàng)建一個(gè)與給定數(shù)組形狀和類(lèi)型相同的新數(shù)組,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-04-04
八個(gè)超級(jí)好用的Python自動(dòng)化腳本(小結(jié))
每天你都可能會(huì)執(zhí)行許多重復(fù)的任務(wù),例如閱讀新聞、發(fā)郵件、查看天氣、打開(kāi)書(shū)簽、清理文件夾等等,本文主要介紹了Python自動(dòng)化腳本,具有一定的參考價(jià)值,感興趣的可以了解一下2022-07-07
Django 多對(duì)多字段的更新和插入數(shù)據(jù)實(shí)例
這篇文章主要介紹了Django 多對(duì)多字段的更新和插入數(shù)據(jù)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
Python使用tkinter模塊實(shí)現(xiàn)推箱子游戲
這篇文章主要介紹了Python使用tkinter模塊實(shí)現(xiàn)推箱子游戲,主要分享兩點(diǎn),第一就是這個(gè)程序的實(shí)現(xiàn)過(guò)程,第二點(diǎn)就是我在編寫(xiě)過(guò)程中的一些思考。本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參看下吧2019-10-10
人工智能深度學(xué)習(xí)OpenAI?baselines的使用方法
這篇文章主要為大家介紹了人工智能深度學(xué)習(xí)OpenAI?baselines的使用方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05

