python中異常捕獲方法詳解
在Python中處理異常使用的是try-except代碼塊,try-except代碼塊放入讓python執(zhí)行的操作,同時(shí)告訴python程序如果發(fā)生了異常該怎么辦,try-except這個(gè)功能其實(shí)很多入門書(shū)籍中都放到了高級(jí)篇幅里,在入門的時(shí)候一般不會(huì)講這個(gè)使用,尤其是作為運(yùn)維人員,如果你經(jīng)常寫(xiě)shell,轉(zhuǎn)到python后估計(jì)也很少使用這個(gè)功能,這功能我覺(jué)得說(shuō)明了shell和python的一個(gè)重要區(qū)別,因?yàn)閜ython是一門真正的編程語(yǔ)言,像其它的編程語(yǔ)言php,java等都會(huì)提供異常捕獲功能,用這些程序?qū)懗龅拇a是要健壯性的,如果你閱讀一些其他人寫(xiě)的程序代碼,尤其是一些socket編程方面的代碼,很多都是try…except…,有的還except好多個(gè),來(lái)判斷各種各樣的情況,既然這個(gè)功能這么有用,我們就來(lái)盡快了解下看如何使用的吧。
第一我們先看看它的語(yǔ)法,語(yǔ)法很簡(jiǎn)單,就是在try-except中放入你想要執(zhí)行的代碼塊,例如:、
try: somecode1 except 異常類型/名稱: somecode2
這是最簡(jiǎn)單的一種情況,如果情況復(fù)雜可以使用多個(gè)except句子,例如:
try: somecode0 except 異常類型/名稱1: somecode1 except 異常2: somecode2 except 異常3: somecode3
try-except還有更高級(jí)的用法,加入else,finally等,今天我們不展開(kāi)說(shuō)了有興趣的可以自己深入研究下。
接下來(lái)我們來(lái)看一個(gè)簡(jiǎn)單例子,讀寫(xiě)文件我們經(jīng)常的操作,一個(gè)常見(jiàn)的問(wèn)題就是找不到文件,或者文件名稱,路徑不正確,對(duì)這種情況,你就可以采用try-except代碼塊直觀的方式來(lái)處理了:
try:
withopen(filename, 'r+') as fp:
data = fp.read()
exceptIOError:
msg = 'sorry, can not read or write this ' + filename
printmsg
我們?cè)倏匆粋€(gè)多except的例子,2個(gè)數(shù)字相減:
loop = 1
while loop == 1:
try:
a = input('請(qǐng)輸入第一個(gè)數(shù)字> ')
b = input('請(qǐng)輸入第二個(gè)數(shù)字 > ')
exceptNameError:
print "請(qǐng)輸入數(shù)字,不能輸入字母"
continue
exceptSyntaxError:
print "請(qǐng)僅輸入一個(gè)數(shù)字."
continue
print a - b
try:
loop = input('按1再開(kāi)始 > ')
except (NameError,SyntaxError):
loop = 0
以上二個(gè)例子就是最簡(jiǎn)單的try-except的用法了,如果想要保證腳本的健壯性,后續(xù)可多用try-except代碼塊吧,這會(huì)讓你的代碼看起來(lái)更專業(yè)。
相關(guān)文章
python正則表達(dá)式中匹配次數(shù)與貪心問(wèn)題詳解(+??*)
正則表達(dá)式是一個(gè)特殊的字符序列,它能幫助你方便的檢查一個(gè)字符串是否與某種模式匹配,下面這篇文章主要給大家介紹了關(guān)于python正則表達(dá)式中匹配次數(shù)與貪心問(wèn)題(+??*)的相關(guān)資料,需要的朋友可以參考下2022-10-10
python多線程實(shí)現(xiàn)同時(shí)執(zhí)行兩個(gè)while循環(huán)的操作
這篇文章主要介紹了python多線程實(shí)現(xiàn)同時(shí)執(zhí)行兩個(gè)while循環(huán)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
python如何通過(guò)正則匹配指定字符開(kāi)頭與結(jié)束提取中間內(nèi)容
這篇文章主要介紹了python通過(guò)正則匹配指定字符開(kāi)頭與結(jié)束提取中間內(nèi)容的操作方法,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02
selenium切換標(biāo)簽頁(yè)解決get超時(shí)問(wèn)題的完整代碼
這篇文章主要給大家介紹了關(guān)于selenium切換標(biāo)簽頁(yè)解決get超時(shí)問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
Python filter()及reduce()函數(shù)使用方法解析
這篇文章主要介紹了Python filter()及reduce()函數(shù)使用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
python中pandas nlargest()的詳細(xì)用法小結(jié)
df.nlargest()是一個(gè)DataFrame的方法,用于返回DataFrame中最大的n個(gè)值所在的行,通過(guò)調(diào)用nlargest()方法,我們返回了分?jǐn)?shù)最高的三個(gè)行,并按照降序排列,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2023-10-10

