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

Python異常處理從try-except到自定義異常的全過程

 更新時間:2026年03月23日 08:57:04   作者:cartech  
在Python編程中,異常處理是寫出健壯代碼的關(guān)鍵技能,本文將帶你深入了解Python的異常處理機(jī)制,從基礎(chǔ)的try-except到自定義異常,讓你的程序更加穩(wěn)定和可靠,感興趣的朋友跟隨小編一起看看吧

??? Python異常處理完全指南:從try-except到自定義異常

在Python編程中,異常處理是寫出健壯代碼的關(guān)鍵技能。本文將帶你深入了解Python的異常處理機(jī)制,從基礎(chǔ)的try-except到自定義異常,讓你的程序更加穩(wěn)定和可靠。

?? 什么是異常?

異常(Exception)是程序執(zhí)行過程中發(fā)生的錯誤事件,會中斷程序的正常流程。Python使用異常對象來表示各種錯誤情況,如除以零、文件不存在、索引越界等。

?? 基礎(chǔ)語法:try-except

最基本的異常處理結(jié)構(gòu)是try-except語句:

try:
    result = 10 / 0
except ZeroDivisionError:
    print("不能除以零!")

?? 捕獲多種異常

可以捕獲多種不同類型的異常:

try:
    number = int(input("請輸入一個數(shù)字:"))
    result = 100 / number
except ValueError:
    print("輸入無效!請輸入數(shù)字。")
except ZeroDivisionError:
    print("不能除以零!")

?? 獲取異常信息

使用as關(guān)鍵字可以獲取異常對象,查看詳細(xì)信息:

try:
    file = open("不存在的文件.txt", "r")
except FileNotFoundError as e:
    print(f"錯誤信息:{e}")
    print(f"錯誤類型:{type(e).__name__}")

? else 和 finally

else塊在沒有異常時執(zhí)行,finally塊無論是否發(fā)生異常都會執(zhí)行:

try:
    file = open("data.txt", "r")
    content = file.read()
except FileNotFoundError:
    print("文件未找到")
else:
    print(f"文件內(nèi)容:{content}")
finally:
    print("清理工作完成")
    if 'file' in locals():
        file.close()

?? 捕獲所有異常

使用Exception可以捕獲大部分異常(但不建議濫用):

try:
    # 可能出錯的代碼
    risky_operation()
except Exception as e:
    print(f"發(fā)生錯誤:{e}")
    # 記錄日志或進(jìn)行其他處理

?? raise 主動拋出異常

使用raise可以主動拋出異常:

def check_age(age):
    if age < 0:
        raise ValueError("年齡不能為負(fù)數(shù)")
    if age > 150:
        raise ValueError("年齡不現(xiàn)實")
    return age

try:
    check_age(-5)
except ValueError as e:
    print(f"驗證失?。簕e}")

?? 自定義異常

通過繼承Exception類創(chuàng)建自定義異常:

class ValidationError(Exception):
    """數(shù)據(jù)驗證錯誤"""
    pass
class InsufficientFundsError(Exception):
    """余額不足錯誤"""
    def __init__(self, balance, amount):
        self.balance = balance
        self.amount = amount
        super().__init__(f"余額 {balance} 不足,需要 {amount}")
# 使用自定義異常
class BankAccount:
    def __init__(self, balance=0):
        self.balance = balance
    def withdraw(self, amount):
        if amount > self.balance:
            raise InsufficientFundsError(self.balance, amount)
        self.balance -= amount
        return self.balance
# 測試
account = BankAccount(100)
try:
    account.withdraw(200)
except InsufficientFundsError as e:
    print(f"取款失?。簕e}")
    print(f"當(dāng)前余額:{e.balance}")
    print(f"請求金額:{e.amount}")

?? 異常鏈

使用raise from可以在轉(zhuǎn)換異常時保留原始異常信息:

def parse_config(data):
    try:
        return json.loads(data)
    except json.JSONDecodeError as e:
        raise ConfigError("配置文件格式錯誤") from e
# 這樣可以看到完整的異常鏈

?? 最佳實踐

  1. 精確捕獲:盡量捕獲具體的異常類型,而不是泛泛的Exception
  2. 不要靜默處理:空的except塊會隱藏問題,至少要記錄日志
  3. 使用finally釋放資源:或使用上下文管理器(with語句)
  4. 異常信息要清晰:自定義異常時提供有用的錯誤信息
  5. 不要濫用異常:異常是用于錯誤處理,不是流程控制

?? 上下文管理器與異常

with語句自動處理資源釋放,即使在異常情況下:

# 不需要手動關(guān)閉文件,with會自動處理
with open("data.txt", "r") as file:
    content = file.read()
    # 即使這里發(fā)生異常,文件也會被正確關(guān)閉

?? 總結(jié)

Python的異常處理機(jī)制提供了強(qiáng)大而靈活的錯誤處理能力:

  • try-except:捕獲和處理異常
  • else:無異常時執(zhí)行的代碼
  • finally:無論是否異常都執(zhí)行的清理代碼
  • raise:主動拋出異常
  • 自定義異常:創(chuàng)建特定領(lǐng)域的錯誤類型

掌握異常處理,讓你的Python程序更加健壯和專業(yè)!??

到此這篇關(guān)于Python異常處理從try-except到自定義異常的全過程的文章就介紹到這了,更多相關(guān)Python try-except到自定義異常內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • linux安裝python修改默認(rèn)python版本方法

    linux安裝python修改默認(rèn)python版本方法

    在本文中我們給大家總結(jié)了關(guān)于linux安裝python修改默認(rèn)python版本的方法和相關(guān)知識點,需要的讀者們參考下。
    2019-03-03
  • Python map函數(shù)()用法

    Python map函數(shù)()用法

    map()函數(shù)是Python中的一個內(nèi)置函數(shù),它的功能是將指定的函數(shù),依次作用于可迭代對象的每個元素,并返回一個迭代器對象,這篇文章主要介紹了Python map函數(shù)()用法,需要的朋友可以參考下
    2023-07-07
  • Python Django框架實現(xiàn)應(yīng)用添加logging日志操作示例

    Python Django框架實現(xiàn)應(yīng)用添加logging日志操作示例

    這篇文章主要介紹了Python Django框架實現(xiàn)應(yīng)用添加logging日志操作,結(jié)合實例形式分析了Django框架中添加Python內(nèi)建日志模塊相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • Python中Tkinter組件Button的具體使用

    Python中Tkinter組件Button的具體使用

    Button=組件用于實現(xiàn)各種各樣的按鈕,本文主要介紹了Python中Tkinter組件Button的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2022-01-01
  • Python獲取腳本所在目錄的正確方法

    Python獲取腳本所在目錄的正確方法

    這篇文章主要介紹了Python獲取腳本所在目錄的正確方法,需要的朋友可以參考下
    2014-04-04
  • Python+Selenium+Pytesseract實現(xiàn)圖片驗證碼識別

    Python+Selenium+Pytesseract實現(xiàn)圖片驗證碼識別

    這篇文章主要介紹了利用Python+Selenium+Pytesseract實現(xiàn)圖片驗證碼識別,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-01-01
  • 詳解Python中datetime庫的使用

    詳解Python中datetime庫的使用

    這篇文章主要介紹了Python中datetime庫的使用,它提供了一系列由簡單到復(fù)雜的時間處理方法。datetime 庫可以從系統(tǒng)中獲得時間,并以用戶選擇的格式輸出,需要的朋友可以參考下
    2023-04-04
  • 安裝pyhttpx解決ImportError: DLL load failed錯誤

    安裝pyhttpx解決ImportError: DLL load failed錯誤

    這篇文章主要為大家介紹了安裝pyhttpx解決ImportError: DLL load failed錯誤,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Python函數(shù)參數(shù)定義及傳遞方式解析

    Python函數(shù)參數(shù)定義及傳遞方式解析

    這篇文章主要介紹了Python函數(shù)參數(shù)定義及傳遞方式解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • django使用圖片延時加載引起后臺404錯誤

    django使用圖片延時加載引起后臺404錯誤

    本文給大家介紹的是作者在Django中使用圖片的延時加載技術(shù)后引起后臺404錯誤的問題以及解決思路和方法,有需要的小伙伴可以參考下
    2017-04-04

最新評論

牟定县| 江油市| 莎车县| 天等县| 获嘉县| 曲沃县| 盐山县| 崇信县| 鄯善县| 芦山县| 嫩江县| 漳平市| 新巴尔虎右旗| 喜德县| 任丘市| 安塞县| 泸溪县| 金川县| 禹城市| 东台市| 钟山县| 木里| 新郑市| 平定县| 综艺| 手游| 奉化市| 青河县| 晋江市| 襄垣县| 清苑县| 南靖县| 宁远县| 清河县| 天津市| 巴青县| 夏邑县| 屏南县| 肃南| 永兴县| 福清市|