真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python的異常處理語(yǔ)句的使用

這篇文章給大家分享的是python中使用異常處理語(yǔ)句處理錯(cuò)誤的方法,相信大部分人都還沒(méi)學(xué)會(huì)這個(gè)技能,為了讓大家學(xué)會(huì),給大家總結(jié)了以下內(nèi)容,話不多說(shuō),一起往下看吧。

成都創(chuàng)新互聯(lián)于2013年開(kāi)始,先為滎經(jīng)等服務(wù)建站,滎經(jīng)等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為滎經(jīng)企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

在執(zhí)行python腳本時(shí),正常運(yùn)行的時(shí)候,也可能發(fā)生錯(cuò)誤,返回的錯(cuò)誤類型就是報(bào)錯(cuò)信息,我們可以針對(duì)其返回的錯(cuò)誤類型執(zhí)行相應(yīng)的語(yǔ)句,錯(cuò)誤類型有很多,如:ValueError、TypeError、NameError、ZeroDivisionError.....

1、try / except

來(lái)個(gè)簡(jiǎn)單的語(yǔ)法,如下:

while True:
    try:
        x = int(input('請(qǐng)輸入一個(gè)數(shù)字:'))
        break
    except ValueError:
        print('您輸入的不是一個(gè)數(shù)字,請(qǐng)?jiān)俅螄L試!')

執(zhí)行結(jié)果如下:

請(qǐng)輸入一個(gè)數(shù)字:d
您輸入的不是一個(gè)數(shù)字,請(qǐng)?jiān)俅螄L試!
請(qǐng)輸入一個(gè)數(shù)字:3

try語(yǔ)句按照如下的方式工作:

  • 首先,執(zhí)行try子句(在關(guān)鍵字try和except之間的語(yǔ)句)。
  • 如果沒(méi)有發(fā)生異常,則忽略except子句,try子句執(zhí)行后結(jié)束。
  • 如果在執(zhí)行try子句的過(guò)程中發(fā)生了異常,那么try子句余下的部分將會(huì)被忽略,如果異常類型和except之后定義的異常類型相同,則會(huì)執(zhí)行except關(guān)鍵字下的子句。
  • 如果一個(gè)異常沒(méi)有與任何except匹配,那么這個(gè)異常將會(huì)傳遞給上層的try中。
  • 一個(gè)try語(yǔ)句可以包含多個(gè)except子句,分別來(lái)處理不同的特定異常,但是最多只有一個(gè)except分支會(huì)被執(zhí)行。

  • 處理程序?qū)⒅会槍?duì)對(duì)應(yīng)的try子句中的異常進(jìn)行處理,而不是其他的try的處理程序中的異常。

一個(gè)except子句可以同時(shí)處理多個(gè)異常,這些異常被放在括號(hào)中成為一個(gè)元組,栗子如下:

except (RuntimeError,TypeError,NameError,ValueError):
    pass

注:pass表示忽略此異常,不執(zhí)行任何語(yǔ)句。

最后一個(gè)except子句可以忽略異常的名稱,它被當(dāng)作通配符使用。栗子如下:

try:
    f = open('myfile.txt')
    s = f.readline()
    i = int(s.strip())
except OSError as err:
    print("OS error: {0}".format(err))
except ValueError:
    print("不能將數(shù)據(jù)轉(zhuǎn)換為整數(shù)類型!")
except:
    pass

2、try / except / else

try/except語(yǔ)句還有一個(gè)可選的else子句,如果使用這個(gè)子句,那么必須放在所有except子句之后,else子句將在try子句沒(méi)有發(fā)生任何異常的時(shí)候執(zhí)行。

語(yǔ)法格式如下:

    try:
        #正常執(zhí)行的代碼塊
    except 異常類型:
        #發(fā)生異常時(shí)執(zhí)行的代碼塊
    else:
        # 沒(méi)有異常時(shí)執(zhí)行的代碼塊

栗子如下:

while True:
    try:
        x = int(input('請(qǐng)輸入一個(gè)數(shù)字:'))
        # break
    except (ValueError,NameError,Exception):
        print("您輸入的不是數(shù)字!")
    else:
        print('用戶輸入完畢!')

使用else子句比把所有的語(yǔ)句都放在try子句里要好,這樣可以避免一些意想不到,而except又無(wú)法捕獲的異常。

異常處理并不僅僅處理那些直接發(fā)生在try子句中的異常,而且還能處理子句中調(diào)用的函數(shù)(甚至間接調(diào)用的函數(shù))里拋出異常,栗子如下:

try:
    this_fails()
except ZeroDivisionError as err:
    print('Handling run-time error:', err)

在上面的栗子中,如果函數(shù)中報(bào)錯(cuò)類型為:ZeroDivisionError,那么將會(huì)輸出以下內(nèi)容:

Handling run-time error:err

3、try / finally

try / finally語(yǔ)句無(wú)論是否發(fā)生都將執(zhí)行最后的代碼。

語(yǔ)法格式:

try:
    #正常執(zhí)行的代碼塊
except 異常類型:
    #發(fā)生異常時(shí)執(zhí)行的代碼塊
else:
    #沒(méi)有異常時(shí)執(zhí)行的代碼塊
finally:
    #不管有沒(méi)有異常都會(huì)執(zhí)行的代碼塊

示例如下:

while True:
    try:
        x = int(input('請(qǐng)輸入一個(gè)數(shù)字:'))
        # break
    except (ValueError,NameError,Exception):
        print("您輸入的不是數(shù)字!")
    else:
        print('用戶輸入完畢!')
    finally:
        print("這句話,無(wú)論異常是否發(fā)生都會(huì)執(zhí)行。")

關(guān)于python的異常處理語(yǔ)句的使用就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。


當(dāng)前名稱:python的異常處理語(yǔ)句的使用
文章位置:http://weahome.cn/article/pjgeoo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部