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

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

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

異常是什么

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

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

一、異常捕獲的框架

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

第一種框架:

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

第二種框架:

這里不寫異常類型和變量,也是可以的,因為 python 解釋器內部有一個基類(object),就是異常的基類 Exception ,系統(tǒng)會自動根據你出現的異常類型,去給你打印對應的異常內容

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

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

NameError、ZeroDivisionError、list index out of range

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

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

二、try-except 組合

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

第一種組合:try-except

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

 如下圖輸出的為:異常類型所對應的類型

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

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

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

 -當除數為0的情況,有異常的時候

 第二種組合:try-except-else

這種組合用的較少

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

輸出的結果為:3,因為沒有異常,所以也就沒有執(zhí)行 except 里面的代碼,也就執(zhí)行了 else

這種其實就跟我們正常的 try-except 組合很像,只不過這里單獨 加了一個 else 關鍵字而已

讓其輸出結果,沒有什么特別之處

第三種組合:try-except-finally 

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

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

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

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

 - 有異常的時候

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

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

第四種組合:try-except-except 

當要寫的代碼中可能要出現兩個異常的時候,這里就可以再添加一個 except 保留字

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

如下,當除數為0的異常,我自定了一個打印內容:除數不能為0,卻沒有執(zhí)行

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

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

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

相關文章

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

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

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

    Python正則表達式中flags參數的實例詳解

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

    Python中__new__()方法適應及注意事項詳解

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

    Python+OpenCV實現在圖像上繪制矩形

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

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

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

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

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

    Python常見讀寫文件操作實例總結【文本、json、csv、pdf等】

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

    基于python獲取本地時間并轉換時間戳和日期格式

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

    python切片復制列表的知識點詳解

    在本篇文章里小編給大家整理的是一篇關于python切片復制列表的知識點相關內容,有興趣的朋友們可以跟著學習下。
    2021-10-10
  • 關于Django Models CharField 參數說明

    關于Django Models CharField 參數說明

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

最新評論

莒南县| 红原县| 广昌县| 马尔康县| 囊谦县| 友谊县| 旌德县| 德化县| 泗阳县| 宣化县| 阜新| 囊谦县| 昆明市| 韶关市| 绥滨县| 疏附县| 峨眉山市| 资溪县| 桐乡市| 治多县| 莒南县| 宝坻区| 宣恩县| 法库县| 金沙县| 阿拉善右旗| 莆田市| 德钦县| 庆元县| 甘孜县| 康保县| 海阳市| 拉萨市| 安国市| 广丰县| 小金县| 屏东市| 洮南市| 平江县| 临夏县| 鸡泽县|