欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中try用法、內(nèi)置異常類型與自定義異常類型拓展案例詳解

 更新時(shí)間:2025年04月14日 09:15:44   作者:脫脫克克  
在?Python?里,try?語(yǔ)句主要用于異常處理,其作用是捕獲并處理代碼運(yùn)行期間可能出現(xiàn)的異常,避免程序因異常而意外終止,這篇文章主要介紹了Python中try用法、內(nèi)置異常類型與自定義異常類型拓展,需要的朋友可以參考下

try介紹與語(yǔ)法格式

在 Python 里,try 語(yǔ)句主要用于異常處理,其作用是捕獲并處理代碼運(yùn)行期間可能出現(xiàn)的異常,避免程序因異常而意外終止。try 語(yǔ)句通常會(huì)和 except、else 以及 finally 子句搭配使用。具體語(yǔ)法框架如下:

try:
    # 可能會(huì)引發(fā)異常的代碼塊
    pass
except ExceptionType1:
    # 處理特定類型異常的代碼塊
    pass
except ExceptionType2:
    # 處理另一種特定類型異常的代碼塊
    pass
else:
    # 當(dāng) try 代碼塊沒有引發(fā)異常時(shí)執(zhí)行的代碼塊
    pass
finally:
    # 無(wú)論 try 代碼塊是否引發(fā)異常,都會(huì)執(zhí)行的代碼塊
    pass

在 Python 里,pass 是一個(gè)空語(yǔ)句,它不執(zhí)行任何操作,主要用于占位,保證代碼的語(yǔ)法完整性。

try具體使用案例

下面結(jié)合前面讀取 .xlsx 文件的代碼詳細(xì)講解其用法:

import openpyxl
def read_xlsx(file_path):
    try:
        # 以二進(jìn)制模式打開 .xlsx 文件
        workbook = openpyxl.load_workbook(file_path)
        # 獲取活動(dòng)工作表
        sheet = workbook.active
        # 遍歷工作表中的每一行
        for row in sheet.iter_rows(values_only=True):
            print(row)
    except FileNotFoundError:
        print(f"錯(cuò)誤:未找到文件 {file_path}。")
    except Exception as e:
        print(f"發(fā)生未知錯(cuò)誤:{e}")
if __name__ == "__main__":
    file_path = 'example.xlsx'
    read_xlsx(file_path)
  • try 代碼塊包含了可能會(huì)引發(fā)異常的代碼。在這個(gè)例子中,openpyxl.load_workbook(file_path)
  • 嘗試打開指定路徑的 .xlsx 文件,若文件不存在或者文件格式有誤,就可能會(huì)引發(fā)異常。
  • 后續(xù)的代碼如獲取活動(dòng)工作表和遍歷工作表中的行,在文件打開成功后執(zhí)行,同樣可能會(huì)因?yàn)槲募?nèi)容不規(guī)范等原因引發(fā)異常。
  • except FileNotFoundError:專門處理FileNotFoundError異常,也就是當(dāng)指定的文件不存在時(shí),會(huì)執(zhí)行該代碼塊中的語(yǔ)句,打印出錯(cuò)誤信息。
  • except Exception as e:這是一個(gè)通用的異常處理塊,會(huì)捕獲除 FileNotFoundError之外的其他所有異常,并將異常信息存儲(chǔ)在變量 e 中,然后打印出未知錯(cuò)誤信息。

except的異常類型

簡(jiǎn)介

在 Python 里,try-except 語(yǔ)句會(huì)依據(jù) try 代碼塊拋出的異常類型來(lái)判定執(zhí)行哪個(gè) except 子句。當(dāng) try 代碼塊出現(xiàn)異常時(shí),Python 會(huì)按順序檢查每個(gè) except 子句,查看其指定的異常類型是否與拋出的異常類型相匹配。若匹配成功,就會(huì)執(zhí)行該 except 子句里的代碼。

案例

下面給出一個(gè)示例,借助打印信息來(lái)明確執(zhí)行了哪個(gè) except 子句:

try:
    # 可能會(huì)引發(fā)異常的代碼塊
    result = 1 / 0  # 這里會(huì)引發(fā) ZeroDivisionError
except ZeroDivisionError:
    # 處理特定類型異常的代碼塊
    print("執(zhí)行了 ZeroDivisionError 異常處理")
except ValueError:
    # 處理另一種特定類型異常的代碼塊
    print("執(zhí)行了 ValueError 異常處理")
else:
    # 當(dāng) try 代碼塊沒有引發(fā)異常時(shí)執(zhí)行的代碼塊
    print("try 代碼塊沒有引發(fā)異常")
finally:
    # 無(wú)論 try 代碼塊是否引發(fā)異常,都會(huì)執(zhí)行的代碼塊
    print("finally 代碼塊始終會(huì)執(zhí)行")

在這個(gè)示例中,try 代碼塊里的 1 / 0 會(huì)引發(fā) ZeroDivisionError 異常。所以,Python 會(huì)檢查各個(gè) except 子句,發(fā)現(xiàn) ZeroDivisionError 匹配第一個(gè) except 子句,進(jìn)而執(zhí)行該子句里的代碼,輸出 “執(zhí)行了 ZeroDivisionError 異常處理”。

內(nèi)置的常見異常類型

以下是Python中常見的可被except捕獲的內(nèi)置異常類型匯總表格(基于Exception基類體系):

自定義異常類型

自定義異常需要繼承自 Python 的內(nèi)置異常類,通常是 Exception 類。下面是一個(gè)自定義異常的示例:

# 定義一個(gè)自定義異常類
class MyCustomError(Exception):
    pass
try:
    # 模擬拋出自定義異常
    raise MyCustomError("這是一個(gè)自定義異常")
except MyCustomError as e:
    print(f"捕獲到自定義異常: {e}")

在上述代碼中,MyCustomError 是自定義的異常類,它繼承自 Exception 類。在 try 代碼塊中使用 raise 關(guān)鍵字拋出這個(gè)自定義異常,然后在 except 語(yǔ)句中捕獲并處理它。

繼承關(guān)系

Exception 類繼承自 BaseException,不過(guò)像 SystemExitKeyboardInterruptGeneratorExit 這類系統(tǒng)退出相關(guān)的異常直接繼承自 BaseException,而非 Exception。這意味著 Exception 類涵蓋的是常規(guī)的程序運(yùn)行時(shí)錯(cuò)誤,并非用于處理系統(tǒng)層面的退出事件。

用途

  • 捕獲通用異常:在編寫代碼時(shí),若不確定會(huì)出現(xiàn)哪種具體的異常,可使用 Exception 類來(lái)捕獲所有常規(guī)異常。
  • 創(chuàng)建自定義異常:可以通過(guò)繼承 Exception 類來(lái)創(chuàng)建自定義的異常類,從而在特定場(chǎng)景下拋出這些自定義異常。

注意事項(xiàng)

  • 慎用 except Exception:雖然 except Exception 能捕獲所有常規(guī)異常,但可能會(huì)掩蓋一些本應(yīng)被關(guān)注的特定異常,使調(diào)試變得困難。因此,在可能的情況下,最好捕獲具體的異常類型。
  • 自定義異常的命名:自定義異常類的命名應(yīng)清晰地反映其用途,通常以 Error 結(jié)尾,比如DatabaseError、ValidationError 等。

到此這篇關(guān)于Python中try用法、內(nèi)置異常類型與自定義異常類型拓展的文章就介紹到這了,更多相關(guān)Python try用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python正則表達(dá)式指南 推薦

    Python正則表達(dá)式指南 推薦

    本文介紹了Python對(duì)于正則表達(dá)式的支持,包括正則表達(dá)式基礎(chǔ)以及Python正則表達(dá)式標(biāo)準(zhǔn)庫(kù)的完整介紹及使用示例。本文的內(nèi)容不包括如何編寫高效的正則表達(dá)式、如何優(yōu)化正則表達(dá)式,這些主題請(qǐng)查看其他教程。
    2018-10-10
  • 在多種情況/開發(fā)環(huán)境中運(yùn)行python腳本和代碼的技巧分享

    在多種情況/開發(fā)環(huán)境中運(yùn)行python腳本和代碼的技巧分享

    Python腳本或程序是包含可執(zhí)行Python代碼的文件,能夠運(yùn)行Python腳本和代碼可能是您作為Python開發(fā)人員所需的最重要的技能,在本教程中,您將學(xué)習(xí)一些運(yùn)行Python腳本和代碼的技術(shù),在每種情況下使用的技術(shù)將取決于您的環(huán)境、平臺(tái)、需求和技能
    2023-11-11
  • Python中的a=value1 or value2詳解

    Python中的a=value1 or value2詳解

    Python中的`a=valueor0`是一種簡(jiǎn)潔的方式來(lái)為變量提供默認(rèn)值,利用了Python的布爾上下文和短路求值機(jī)制,如果`value`是“真值”,則`a`被賦值為`value`;如果`value`是“假值”,則`a`被賦值為0
    2024-12-12
  • python基于itchat模塊實(shí)現(xiàn)微信防撤回

    python基于itchat模塊實(shí)現(xiàn)微信防撤回

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)微信防撤回,基于itchat模塊,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • 16個(gè)python常用魔法函數(shù)小結(jié)

    16個(gè)python常用魔法函數(shù)小結(jié)

    本文主要介紹了16個(gè)python常用魔法函數(shù)小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • 淺談Python2.6和Python3.0中八進(jìn)制數(shù)字表示的區(qū)別

    淺談Python2.6和Python3.0中八進(jìn)制數(shù)字表示的區(qū)別

    下面小編就為大家?guī)?lái)一篇淺談Python2.6和Python3.0中八進(jìn)制數(shù)字表示的區(qū)別。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • Python處理數(shù)據(jù)之匹配兩個(gè)Excel文件數(shù)據(jù)的實(shí)現(xiàn)方法

    Python處理數(shù)據(jù)之匹配兩個(gè)Excel文件數(shù)據(jù)的實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于Python處理數(shù)據(jù)之匹配兩個(gè)Excel文件數(shù)據(jù)的實(shí)現(xiàn)方法,可以使用Python的Pandas庫(kù)來(lái)實(shí)現(xiàn)兩層循環(huán)匹配兩個(gè)Excel文件,需要的朋友可以參考下
    2023-09-09
  • Django中的AutoField字段使用

    Django中的AutoField字段使用

    這篇文章主要介紹了Django中的AutoField字段使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • python中Matplotlib實(shí)現(xiàn)繪制3D圖的示例代碼

    python中Matplotlib實(shí)現(xiàn)繪制3D圖的示例代碼

    本篇文章主要介紹了python中Matplotlib實(shí)現(xiàn)繪制3D圖的示例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-09-09
  • 使用python接入微信聊天機(jī)器人

    使用python接入微信聊天機(jī)器人

    這篇文章主要為大家詳細(xì)介紹了使用python接入微信聊天機(jī)器人,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06

最新評(píng)論