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

Python異常處理操作舉例詳細教程

 更新時間:2025年05月27日 10:47:18   作者:Yant224  
異常處理的能力是一門語言好壞的重要特征,python也提供了強大的異常處理功能,這篇文章主要介紹了Python異常處理操作的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

一、異常處理基礎

1. 基本語法結(jié)構(gòu)

try:
    # 可能引發(fā)異常的代碼
    result = 10 / 0
except ZeroDivisionError:
    # 處理特定異常
    print("不能除以零!")
except Exception as e:
    # 通用異常處理
    print(f"發(fā)生錯誤: {e}")
else:
    # 無異常時執(zhí)行
    print("計算成功")
finally:
    # 始終執(zhí)行的清理代碼
    print("清理資源")
  • 異常傳播機制

二、常見異常類型

1. 內(nèi)置異常層次

所有異常類都繼承 BaseException

BaseException
 ├── KeyboardInterrupt
 ├── SystemExit
 └── Exception
      ├── ArithmeticError
      │    ├── ZeroDivisionError
      │    └── FloatingPointError
      ├── LookupError
      │    ├── IndexError
      │    └── KeyError
      ├── OSError
      │    ├── FileNotFoundError
      │    └── PermissionError
      └── ValueError

2. 常見異常示例

# 文件操作
try:
    with open("nonexist.txt") as f:
        content = f.read()
except FileNotFoundError:
    print("文件不存在")

# 類型轉(zhuǎn)換
try:
    num = int("abc")
except ValueError:
    print("無效的數(shù)字格式")

# 字典操作
d = {"key": "value"}
try:
    print(d["missing"])
except KeyError:
    print("鍵不存在")

三、多重異常處理

1. 合并捕獲

try:
    # 可能拋出多種異常的代碼
except (TypeError, ValueError) as e:
    print(f"輸入類型錯誤: {e}")

2. 分層處理

try:
    data = json.loads(invalid_json)
except json.JSONDecodeError:
    print("JSON解析失敗")
except Exception:
    print("其他未知錯誤")

四、finally與else子句

1. finally 應用場景

file = None
try:
    file = open("data.txt", "r")
    process(file)
except IOError:
    print("文件操作錯誤")
finally:
    if file:
        file.close()  # 確保資源釋放

2. else 使用技巧

try:
    result = risky_operation()
except NetworkError:
    handle_error()
else:
    save_result(result)  # 僅在成功時執(zhí)行

五、自定義異常

1. 創(chuàng)建異常類

class InvalidEmailError(ValueError):
    """自定義郵箱格式異常"""
    def __init__(self, email):
        super().__init__(f"無效郵箱格式: {email}")
        self.email = email

# 使用示例
email = "user@"
if "@" not in email or "." not in email.split("@")[1]:
    raise InvalidEmailError(email)

2. 異常繼承體系

class DatabaseError(Exception):
    """數(shù)據(jù)庫操作基類異常"""

class ConnectionError(DatabaseError):
    """數(shù)據(jù)庫連接異常"""

class QueryError(DatabaseError):
    """SQL查詢異常"""

六、異常鏈與上下文

1. raise from 語法

try:
    config = load_config()
except FileNotFoundError as e:
    raise RuntimeError("配置加載失敗") from e

2. 異常上下文查看

try:
    # 可能出錯的代碼
except Exception as e:
    print("原始異常:", e.__cause__)
    print("上下文:", e.__context__)

七、最佳實踐與陷阱

推薦做法

  • 具體異常捕獲優(yōu)先
  • 添加有意義的錯誤信息
raise ValueError(f"無效參數(shù)值: {value}")
  • 日志記錄異常
import logging
try:
    process()
except Exception:
    logging.exception("處理失敗")

?? 避免陷阱

  • 捕獲過于寬泛的異常
try:
    ...
except:  # 捕獲所有異常,包括KeyboardInterrupt
    pass
  • 忽略異常
try:
    ...
except Exception:
    pass  # 靜默失敗
  • 重復拋出異常
try:
    ...
except Exception as e:
    print(e)
    raise  # 保留原始堆棧信息

綜合實戰(zhàn)案例

網(wǎng)絡請求重試機制

import requests
from time import sleep

def fetch_data(url, retries=3):
    for attempt in range(retries):
        try:
            response = requests.get(url, timeout=5)
            response.raise_for_status()
            return response.json()
        except requests.HTTPError as e:
            print(f"HTTP錯誤: {e}")
        except requests.Timeout:
            print("請求超時")
        except requests.RequestException:
            print("網(wǎng)絡連接問題")
        
        if attempt < retries - 1:
            sleep(2 ** attempt)  # 指數(shù)退避
    raise Exception(f"請求失敗,已重試{retries}次")

# 使用示例
data = fetch_data("https://api.example.com/data")

通過掌握這些異常處理技巧,您可以:

  • 編寫更健壯的程序
  • 提高錯誤診斷效率
  • 創(chuàng)建更友好的用戶交互體驗
  • 構(gòu)建可維護的異常處理體系

建議在實際開發(fā)中結(jié)合具體業(yè)務場景,設計合理的異常處理策略,并定期審查異常處理代碼的有效性

總結(jié)

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

相關(guān)文章

  • Python實現(xiàn)socket非阻塞通訊功能示例

    Python實現(xiàn)socket非阻塞通訊功能示例

    這篇文章主要介紹了Python實現(xiàn)socket非阻塞通訊功能,結(jié)合實例形式分析了Python使用socket模塊進行非阻塞通訊的原理、多線程及客戶端、服務器端相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2019-11-11
  • python常用的正則表達式大全

    python常用的正則表達式大全

    正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配,下面這篇文章主要給大家介紹了關(guān)于python常用正則表達式的相關(guān)資料,文中通過圖文以及實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-02-02
  • Python進階多線程爬取網(wǎng)頁項目實戰(zhàn)

    Python進階多線程爬取網(wǎng)頁項目實戰(zhàn)

    這篇文章主要為大家介紹了Python進階,Python多線程爬取網(wǎng)頁項目實戰(zhàn)的示例呈現(xiàn)步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • jupyter notebook遠程訪問不了的問題解決方法

    jupyter notebook遠程訪問不了的問題解決方法

    這篇文章主要介紹了jupyter notebook遠程訪問不了的問題解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • Python制作七夕表白案例分享

    Python制作七夕表白案例分享

    這篇文章主要介紹了Python制作七夕表白案例分享,文章利用Python的基本操作實現(xiàn)七夕表白案例,需要的小伙伴可以參考一下
    2022-08-08
  • Python實例解析圖像形態(tài)學運算技術(shù)

    Python實例解析圖像形態(tài)學運算技術(shù)

    形態(tài)學處理方法是基于對二進制圖像進行處理的,卷積核決定圖像處理后的效果。本文將為大家詳細介紹一下OpenCV中的圖像形態(tài)學,感興趣的可以了解一下
    2022-03-03
  • pycharm中成功運行圖片的配置教程

    pycharm中成功運行圖片的配置教程

    今天小編就為大家分享一篇pycharm中成功運行圖片的配置教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python局部變量與全局變量區(qū)別原理解析

    Python局部變量與全局變量區(qū)別原理解析

    這篇文章主要介紹了Python局部變量與全局變量區(qū)別原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • python機器學習庫xgboost的使用

    python機器學習庫xgboost的使用

    這篇文章主要介紹了python機器學習庫xgboost的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • django有外鍵關(guān)系的兩張表如何相互查找

    django有外鍵關(guān)系的兩張表如何相互查找

    這篇文章主要介紹了django有外鍵關(guān)系的兩張表如何相互查找,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02

最新評論