最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中異常的捕獲與處理詳解

 更新時(shí)間:2023年08月16日 10:46:28   作者:史上最強(qiáng)踩坑王  
這篇文章主要介紹了Python中異常的捕獲與處理詳解,調(diào)試Python程序時(shí),經(jīng)常會報(bào)出一些異常,異常的原因一方面可能是寫程序時(shí)由于疏忽或者考慮不全造成了錯(cuò)誤,這時(shí)就需要根據(jù)異常Traceback到出錯(cuò)點(diǎn),進(jìn)行分析改正,需要的朋友可以參考下

異常是什么

Python異常是指在程序運(yùn)行中所產(chǎn)生的錯(cuò)誤,即代碼在無法正常執(zhí)行的情況下就會產(chǎn)生異常。

這個(gè)錯(cuò)誤可以是Python內(nèi)置的錯(cuò)誤類型,也可以是開發(fā)者自定義的錯(cuò)誤類型。

一、異常捕獲的框架

針對異常捕獲有幾種組合使用,針對于不同的場景使用不同的方法,在介紹組合使用的方法之前,先說一下異常捕獲的框架

第一種框架:

try:
    # 此處放你覺得將會出現(xiàn)異常的代碼,放這里
except 異常類型 as 變量:
    print(變量)

第二種框架:

這里不寫異常類型和變量,也是可以的,因?yàn)?python 解釋器內(nèi)部有一個(gè)基類(object),就是異常的基類 Exception ,系統(tǒng)會自動(dòng)根據(jù)你出現(xiàn)的異常類型,去給你打印對應(yīng)的異常內(nèi)容

try:
    # 此處放你要可能要出現(xiàn)異常的代碼
except:   # except 后面也可以不寫異常類型和變量
    print()

異常類型有很多種,例如:

NameError、ZeroDivisionError、list index out of range

  • 變量沒有定義出現(xiàn)的異常
  • 除數(shù)不能為0的異常
  • 使用索引去取值的時(shí)候,超過了索引的范圍的異常

針對于第一種變量沒有定義的異常,這里我在 pycharm 中直接輸入了一個(gè)字母 a,很顯然,我沒有定義變量 a 然后就去運(yùn)行就報(bào)出了異常

二、try-except 組合

  • try-except
  • try-except-else
  • try-except-finally

第一種組合:try-except

# 當(dāng)變量沒有定義的異常
try:
    a                       # try 與 except 之間寫可能會出現(xiàn)異常的代碼
except NameError as s:      # NameError 為異常的類型
    print(s)

 如下圖輸出的為:異常類型所對應(yīng)的類型

 -當(dāng)除數(shù)不為0的時(shí)候,這里要理解,當(dāng)沒有異常的時(shí)候,只會執(zhí)行 try 里面你寫的正常的代碼,而不會去執(zhí)行 except 里面的代碼,所以不必去擔(dān)心,當(dāng)我程序運(yùn)行正常,也會執(zhí)行 except 里面的代碼,而對執(zhí)行的結(jié)果有影響

# 當(dāng)除數(shù)不能為0的異常
try:
    a = 0
    b = 9
    c = a / b                 # 當(dāng)沒有異常的時(shí)候,只會執(zhí)行 try 里面的代碼,而不會執(zhí)行 except 里面的代碼
    print(c)
except ZeroDivisionError as zero:
    print(zero)

上面運(yùn)行的結(jié)果如下圖,輸出了變量 c 的結(jié)果,程序沒有異常,所以就沒有執(zhí)行except

 -當(dāng)除數(shù)為0的情況,有異常的時(shí)候

 第二種組合:try-except-else

這種組合用的較少

# try-except-else 結(jié)構(gòu),當(dāng)沒有異常的時(shí)候,就會執(zhí)行 else 里面的代碼
try:
    a = [1,2,3,4,5]
    b = a[2]
except IndexError as index_a:
    print(index_a)
else:
    print(b)

輸出的結(jié)果為:3,因?yàn)闆]有異常,所以也就沒有執(zhí)行 except 里面的代碼,也就執(zhí)行了 else

這種其實(shí)就跟我們正常的 try-except 組合很像,只不過這里單獨(dú) 加了一個(gè) else 關(guān)鍵字而已

讓其輸出結(jié)果,沒有什么特別之處

第三種組合:try-except-finally 

使用的次數(shù)很多,這里多加了一個(gè)保留字 finally 就是不管是否有異常,都會執(zhí)行 finally 里面的代碼

使用場景就是我可能在日常寫代碼的時(shí)候,我知道某一個(gè)地方可能會出現(xiàn)異常,但是我不管里面是否真正的出現(xiàn)異常,我都繼續(xù)執(zhí)行其它的代碼

# try-except-finally 結(jié)構(gòu),不管代碼是否有異常,最后都會執(zhí)行 finally 里面的代碼
try:
    a = [1,2,3,4,5]
    b = a[2]
except IndexError as index_b:
    print(index_b)
finally:
    print("列表索引超出了范圍")

- 沒有異常的時(shí)候,輸出 finally 里面的代碼 

 - 有異常的時(shí)候

# 1.try-except-finally 結(jié)構(gòu),不管代碼是否有異常,最后都會執(zhí)行 finally 里面的代碼
# 2.except 后面也可以不寫異常類型,因?yàn)橄到y(tǒng)默認(rèn)認(rèn)為后面的錯(cuò)誤類型是 Exception,這是一個(gè)基類,包含了所有的出錯(cuò)類型
try:
    a = [1,2,3,4,5]
    b = a[10]
except:
    print("list index out of range")
finally:
    print("列表取值的索引值超出了范圍")

 - 有異常的時(shí)候,也執(zhí)行了 finally 里面的代碼,注意,這里使用的是第二種結(jié)果,也就是一開始所講的,except 后面沒有跟保留字

第四種組合:try-except-except 

當(dāng)要寫的代碼中可能要出現(xiàn)兩個(gè)異常的時(shí)候,這里就可以再添加一個(gè) except 保留字

但是,這里只會執(zhí)行第一個(gè) except 里面的內(nèi)容

如下,當(dāng)除數(shù)為0的異常,我自定了一個(gè)打印內(nèi)容:除數(shù)不能為0,卻沒有執(zhí)行

"""
如下代碼,有兩個(gè)不同類型的異常,1.變量未定義,2.除數(shù)不能為0,這兩處可能會出現(xiàn)異常
"""
try:
    a
    b = 0
    c = 9
    d = c / b                           # 注意:當(dāng)有多個(gè) except 的時(shí)候,這里只會執(zhí)行第一個(gè) except 里面的代碼,其余的不會執(zhí)行,但是這樣不會標(biāo)紅
except NameError as name:               # 第一種寫法,except 后面跟異常的類型
    print(name)
except:                                 # 第二種寫法,except 后面不跟異常類型,讓其使用默認(rèn)的 Exception 類,這是一個(gè)基類,包含了所有的出錯(cuò)類型
    print("除數(shù)不能為0")

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

到此這篇關(guān)于Python中異常的捕獲與處理詳解的文章就介紹到這了,更多相關(guān)Python異常捕獲處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python用list或dict字段模式讀取文件的方法

    Python用list或dict字段模式讀取文件的方法

    這篇文章主要給大家介紹了Python利用list字段模式或者dict字段模式讀取文件的方法,文中給出了詳細(xì)的介紹和示例代碼,相信對大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋友可以跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-01-01
  • Python正則表達(dá)式中flags參數(shù)的實(shí)例詳解

    Python正則表達(dá)式中flags參數(shù)的實(shí)例詳解

    正則表達(dá)式是一個(gè)很強(qiáng)大的字符串處理工具,幾乎任何關(guān)于字符串的操作都可以使用正則表達(dá)式來完成,下面這篇文章主要給大家介紹了關(guān)于Python正則表達(dá)式中flags參數(shù)的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • Python中__new__()方法適應(yīng)及注意事項(xiàng)詳解

    Python中__new__()方法適應(yīng)及注意事項(xiàng)詳解

    這篇文章主要介紹了Python中__new__()方法適應(yīng)及注意事項(xiàng)的相關(guān)資料,new()方法是Python中的一個(gè)特殊構(gòu)造方法,用于在創(chuàng)建對象之前調(diào)用,并負(fù)責(zé)返回類的新實(shí)例,它與init()方法不同,需要的朋友可以參考下
    2025-03-03
  • Python+OpenCV實(shí)現(xiàn)在圖像上繪制矩形

    Python+OpenCV實(shí)現(xiàn)在圖像上繪制矩形

    這篇文章主要介紹了如何利用Python和OpenCV實(shí)現(xiàn)在圖像上繪制任意大小的矩形,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下
    2022-03-03
  • 一分鐘讓你徹底看懂Python中的//,?/,?%的作用和區(qū)別

    一分鐘讓你徹底看懂Python中的//,?/,?%的作用和區(qū)別

    python中 // 和 / 和 % 用法及區(qū)別 每次都會搞混淆,這次整理一下加深記憶,這篇文章主要介紹了Python中//,?/,?%作用和區(qū)別的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-07-07
  • 詳解python之協(xié)程gevent模塊

    詳解python之協(xié)程gevent模塊

    這篇文章主要介紹了詳解python之協(xié)程gevent模塊,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06
  • Python常見讀寫文件操作實(shí)例總結(jié)【文本、json、csv、pdf等】

    Python常見讀寫文件操作實(shí)例總結(jié)【文本、json、csv、pdf等】

    這篇文章主要介紹了Python常見讀寫文件操作,結(jié)合實(shí)例形式總結(jié)分析了Python常見的各種文件讀寫操作,包括文本、json、csv、pdf等文件的讀寫與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2019-04-04
  • 基于python獲取本地時(shí)間并轉(zhuǎn)換時(shí)間戳和日期格式

    基于python獲取本地時(shí)間并轉(zhuǎn)換時(shí)間戳和日期格式

    這篇文章主要介紹了基于python獲取本地時(shí)間并轉(zhuǎn)換時(shí)間戳和日期格式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • python切片復(fù)制列表的知識點(diǎn)詳解

    python切片復(fù)制列表的知識點(diǎn)詳解

    在本篇文章里小編給大家整理的是一篇關(guān)于python切片復(fù)制列表的知識點(diǎn)相關(guān)內(nèi)容,有興趣的朋友們可以跟著學(xué)習(xí)下。
    2021-10-10
  • 關(guān)于Django Models CharField 參數(shù)說明

    關(guān)于Django Models CharField 參數(shù)說明

    這篇文章主要介紹了關(guān)于Django Models CharField 參數(shù)說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03

最新評論

革吉县| 青龙| 自治县| 山东省| 南丰县| 丹阳市| 渭源县| 临沂市| 白水县| 南部县| 天柱县| 襄城县| 郁南县| 玉林市| 仲巴县| 安新县| 山西省| 慈溪市| 新巴尔虎右旗| 湘潭县| 霍州市| 南通市| 红桥区| 通榆县| 辉县市| 彭泽县| 禹州市| 利川市| 佳木斯市| 河源市| 三台县| 当雄县| 安顺市| 乐清市| 平安县| 乐昌市| 邵阳县| 神木县| 遂川县| 榆林市| 瓦房店市|