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

Python異常處理操作舉例詳細(xì)教程

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

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

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

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

二、常見異常類型

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("無(wú)效的數(shù)字格式")

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

三、多重異常處理

1. 合并捕獲

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

2. 分層處理

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

四、finally與else子句

1. finally 應(yīng)用場(chǎng)景

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

2. else 使用技巧

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

五、自定義異常

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

class InvalidEmailError(ValueError):
    """自定義郵箱格式異常"""
    def __init__(self, email):
        super().__init__(f"無(wú)效郵箱格式: {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ù)庫(kù)操作基類異常"""

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

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

六、異常鏈與上下文

1. raise from 語(yǔ)法

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

2. 異常上下文查看

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

七、最佳實(shí)踐與陷阱

推薦做法

  • 具體異常捕獲優(yōu)先
  • 添加有意義的錯(cuò)誤信息
raise ValueError(f"無(wú)效參數(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  # 保留原始堆棧信息

綜合實(shí)戰(zhàn)案例

網(wǎng)絡(luò)請(qǐng)求重試機(jī)制

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錯(cuò)誤: {e}")
        except requests.Timeout:
            print("請(qǐng)求超時(shí)")
        except requests.RequestException:
            print("網(wǎng)絡(luò)連接問題")
        
        if attempt < retries - 1:
            sleep(2 ** attempt)  # 指數(shù)退避
    raise Exception(f"請(qǐng)求失敗,已重試{retries}次")

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

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

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

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

總結(jié)

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Python腳本生成exe的實(shí)用指南

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

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

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

    詳解Python中datetime庫(kù)的使用

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

最新評(píng)論

永顺县| 南部县| 伽师县| 突泉县| 馆陶县| 永登县| 兰西县| 门头沟区| 庄河市| 景宁| 宁南县| 菏泽市| 洛南县| 霍州市| 龙海市| 汝城县| 陈巴尔虎旗| 白银市| 温州市| 临桂县| 西昌市| 陇西县| 治多县| 论坛| 繁峙县| 曲沃县| 西乌珠穆沁旗| 万山特区| 阿克苏市| 峨边| 漾濞| 阿拉尔市| 通道| 尖扎县| 德安县| 金寨县| 锡林浩特市| 南安市| 萍乡市| 牙克石市| 吐鲁番市|