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

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

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

一、異常處理基礎(chǔ)

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 應(yīng)用場景

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  # 靜默失敗
  • 重復(fù)拋出異常
try:
    ...
except Exception as e:
    print(e)
    raise  # 保留原始堆棧信息

綜合實戰(zhàn)案例

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

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)絡(luò)連接問題")
        
        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è)務(wù)場景,設(shè)計合理的異常處理策略,并定期審查異常處理代碼的有效性

總結(jié)

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

相關(guān)文章

  • Python大數(shù)據(jù)量文本文件高效解析方案代碼實現(xiàn)全過程

    Python大數(shù)據(jù)量文本文件高效解析方案代碼實現(xiàn)全過程

    在數(shù)據(jù)分析中,有時數(shù)據(jù)源會是超大的文本文件(幾G,或在幾十G),需要從中提取需要的信息,下面這篇文章主要給大家介紹了關(guān)于Python大數(shù)據(jù)量文本文件高效解析方案代碼實現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • Python PDF識別之文本內(nèi)容與表格提取方法總結(jié)

    Python PDF識別之文本內(nèi)容與表格提取方法總結(jié)

    這篇文章主要帶大家深入探討多種PDF文本與表格提取方法,結(jié)合實際代碼示例,為大家呈現(xiàn)一份全面的PDF提取指南,希望對大家有所幫助
    2025-08-08
  • Django xadmin開啟搜索功能的實現(xiàn)

    Django xadmin開啟搜索功能的實現(xiàn)

    今天小編就為大家分享一篇Django xadmin開啟搜索功能的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python3 實現(xiàn)串口兩進程同時讀寫

    Python3 實現(xiàn)串口兩進程同時讀寫

    今天小編就為大家分享一篇Python3 實現(xiàn)串口兩進程同時讀寫,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • python展開嵌套列表的多種方法

    python展開嵌套列表的多種方法

    本文主要介紹了python展開嵌套列表的多種方法,包括for循環(huán)、列表推導(dǎo)式和sum函數(shù)三種方法,具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • Python趣味爬蟲之用Python實現(xiàn)智慧校園一鍵評教

    Python趣味爬蟲之用Python實現(xiàn)智慧校園一鍵評教

    你還在為智慧校園每周的評教而苦惱嗎?今天我來幫你解放雙手,用Python實現(xiàn)一鍵評教,從此生活無憂無慮,文中有非常詳細的代碼示例,需要的朋友可以參考下
    2021-05-05
  • python獲取一組數(shù)據(jù)里最大值max函數(shù)用法實例

    python獲取一組數(shù)據(jù)里最大值max函數(shù)用法實例

    這篇文章主要介紹了python獲取一組數(shù)據(jù)里最大值max函數(shù)用法,實例分析了max函數(shù)的使用技巧,需要的朋友可以參考下
    2015-05-05
  • Python腳本生成exe的實用指南

    Python腳本生成exe的實用指南

    本文介紹了使用PyInstaller將Python腳本打包成.exe文件的簡單方法,并提供了從準備工作到具體命令的一系列指導(dǎo),包括如何安裝PyInstaller、基礎(chǔ)打包命令、修改輸出目錄、改變.exe文件名、隱藏黑窗口等實用技巧,需要的朋友可以參考下
    2026-04-04
  • python 上下文管理器及自定義原理解析

    python 上下文管理器及自定義原理解析

    這篇文章主要介紹了python 上下文管理器原理解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • 詳解Python中datetime庫的使用

    詳解Python中datetime庫的使用

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

最新評論

桂林市| 平潭县| 全州县| 依兰县| 明水县| 毕节市| 诸城市| 渭源县| 黎平县| 伊川县| 怀安县| 新津县| 都匀市| 安顺市| 龙里县| 文山县| 沽源县| 敖汉旗| 大新县| 新干县| 城步| 南汇区| 平利县| 宁国市| 孝义市| 澄城县| 琼中| 教育| 浦县| 绵阳市| 霍州市| 皮山县| 五河县| 垫江县| 安泽县| 施秉县| 天气| 万州区| 玉树县| 新蔡县| 夏河县|