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

