日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Python 異常處理的十個實用策略

來源: 責編: 時間:2024-05-23 17:12:14 160觀看
導讀今天我們要聊聊Python里的那些“意外”事兒——異常處理!別擔心,學會了這些策略,你的代碼就能穩如老狗,即便遇到坑也能優雅地跳過去。1. 異常處理基礎:Try-Except的溫暖擁抱想象一下,你正開心地讀取一個文件,突然“啪”,文件

今天我們要聊聊Python里的那些“意外”事兒——異常處理!別擔心,學會了這些策略,你的代碼就能穩如老狗,即便遇到坑也能優雅地跳過去。Tuq28資訊網——每日最新資訊28at.com

Tuq28資訊網——每日最新資訊28at.com

1. 異常處理基礎:Try-Except的溫暖擁抱

想象一下,你正開心地讀取一個文件,突然“啪”,文件不存在!這時候,就需要try-except來救場了。Tuq28資訊網——每日最新資訊28at.com

try:    with open("不存在的文件.txt", 'r') as file:        content = file.read()        print(content)except FileNotFoundError:    print("哎呀,文件沒找到呢!")

這段代碼的意思是:“嘿,Python,試試看打開這個文件,如果不行(遇到FileNotFoundError),就執行下面的安慰話。”Tuq28資訊網——每日最新資訊28at.com

2. 多重異常:一網打盡

有時候,不是只有單一的問題,這時候我們可以用一個except捕獲多個異常。Tuq28資訊網——每日最新資訊28at.com

try:    # 假設這里可能拋出多種異常    result = 10 / 0    print(result)except (ZeroDivisionError, TypeError) as e:    print(f"出錯了,原因可能是:{e}")

這里我們同時看著零除錯誤和類型錯誤,就像帶著多層防護網。Tuq28資訊網——每日最新資訊28at.com

3. 捕獲所有異常:最終防線

當你不確定會遇到什么異常,可以使用Exception來捕獲所有非系統退出異常。Tuq28資訊網——每日最新資訊28at.com

try:    # 可能引發任何異常的操作    eval(input("輸入一些危險的代碼吧:"))except Exception as e:    print(f"安全第一,阻止了不安全的操作:{e}")

但要小心,別濫用,否則錯誤信息可能會變得難以追蹤哦!Tuq28資訊網——每日最新資訊28at.com

4. 細粒度異常處理:精準打擊

對于復雜的程序,精確捕獲特定異常更有利于問題定位。Tuq28資訊網——每日最新資訊28at.com

try:    number = int(input("請輸入一個數字:"))    print(10 / number)except ValueError:    print("輸入的不是數字哦!")except ZeroDivisionError:    print("不能除以零!")

這樣,用戶得到的反饋更加具體,而不是籠統的錯誤信息。Tuq28資訊網——每日最新資訊28at.com

5. 異常鏈:追蹤錯誤的來龍去脈

當一個異常觸發另一個異常時,保持原始異常信息很重要。Tuq28資訊網——每日最新資訊28at.com

try:    raise ValueError("起始錯誤")except ValueError as ve:    try:        raise ZeroDivisionError("由上一個錯誤引發")    except ZeroDivisionError as zde:        print("發生了兩個錯誤!原始錯誤是:", ve)        raise zde from ve  # 保留錯誤鏈

這樣,你可以知道錯誤是如何一層層傳遞的。Tuq28資訊網——每日最新資訊28at.com

6. 使用else和finally:打掃戰場

Tuq28資訊網——每日最新資訊28at.com

else:在沒有異常發生時執行。Tuq28資訊網——每日最新資訊28at.com

finally:無論是否發生異常都會執行,非常適合資源清理。Tuq28資訊網——每日最新資訊28at.com

try:    # 嘗試執行的代碼    x = 5except ValueError:    print("處理異常")else:    print("一切順利,x =", x)finally:    print("不管怎樣,我都要執行清理工作")

7. 自定義異常:個性化的錯誤信號

有時候,Python自帶的異常不夠用,我們就可以DIY啦!Tuq28資訊網——每日最新資訊28at.com

class CustomError(Exception):    def __init__(self, message):        self.message = messagetry:    raise CustomError("這是我的自定義錯誤!")except CustomError as ce:    print(ce.message)

這樣,你的程序就有了自己的語言!Tuq28資訊網——每日最新資訊28at.com

8. with語句的異常處理:資源管理小能手

用with不僅可以自動管理資源,還能優雅地處理異常。Tuq28資訊網——每日最新資訊28at.com

with open("test.txt", 'w') as file:    try:        file.write("你好,世界!")        file.non_existent_method()  # 假設這里有一個不存在的方法    except AttributeError:        print("文件操作出了點小狀況")

即使內部有錯誤,文件也會被正確關閉。Tuq28資訊網——每日最新資訊28at.com

9. 避免空的except:不要吃掉錯誤哦

try:    # 可能出錯的代碼except:    pass  # 不推薦這樣做!

這樣做會隱藏錯誤,讓調試變成一場噩夢。記得總是指定你想要捕獲的異常類型。Tuq28資訊網——每日最新資訊28at.com

10. 異常作為流程控制:巧妙的決策樹

雖然不常見,但在某些情況下,利用異常來改變程序流也是可以的,但要謹慎使用。Tuq28資訊網——每日最新資訊28at.com

def find_item(items, target):    for item in items:        if item == target:            return item    raise StopIteration(f"{target} not found")try:    print(find_item([1, 2, 3], 4))except StopIteration as si:    print(si)

這里我們用StopIteration來表示查找失敗,當然,一般我們會選擇返回None或使用其他邏輯。Tuq28資訊網——每日最新資訊28at.com

好啦,以上就是Python異常處理的十大策略,希望它們能讓你的代碼之旅更加平穩愉快。Tuq28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-90344-0.htmlPython 異常處理的十個實用策略

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 優秀 C# 通信框架推薦及介紹

下一篇: 比較 kube-proxy 模式:iptables 還是 IPVS?

標簽:
  • 熱門焦點
  • 中興AX5400Pro+上手體驗:再升級 雙2.5G網口+USB 3.0這次全都有

    2021年11月的時候,中興先后發布了兩款路由器產品,中興AX5400和中興AX5400 Pro,從產品命名上就不難看出這是隸屬于同一系列的,但在外觀設計上這兩款產品可以說是完全沒一點關系
  • 7月安卓手機性能榜:紅魔8S Pro再奪榜首

    7月份的手機市場風平浪靜,除了紅魔和努比亞帶來了兩款搭載驍龍8Gen2領先版處理器的新機之外,別的也想不到有什么新品了,這也正常,通常6月7月都是手機廠商修整的時間,進入8月份之
  • 印度登月最關鍵一步!月船三號今晚進入環月軌道

    8月5日消息,據印度官方消息,月船三號將于北京時間今晚21時30分左右開始近月制動進入環月軌道。這是該探測器能夠成功的最關鍵步驟之一,如果成功將開始圍
  • 谷歌KDD'23工作:如何提升推薦系統Ranking模型訓練穩定性

    谷歌在KDD 2023發表了一篇工作,探索了推薦系統ranking模型的訓練穩定性問題,分析了造成訓練穩定性存在問題的潛在原因,以及現有的一些提升模型穩定性方法的不足,并提出了一種新
  • 消費結構調整丨巨頭低價博弈,拼多多還卷得動嗎?

    來源:征探財經作者:陳香羽隨著流量紅利的退潮,電商的存量博弈越來越明顯。曾經主攻中高端與品質的淘寶天貓、京東重拾“低價”口號。而過去與他們錯位競爭的拼多多,靠
  • 大廠卷向扁平化

    來源:新熵作者丨南枝 編輯丨月見大廠職級不香了。俗話說,兵無常勢,水無常形,互聯網企業調整職級體系并不稀奇。7月13日,淘寶天貓集團啟動了近年來最大的人力制度改革,目前已形成一
  • 當家的盒馬,加速謀生

    來源 | 價值星球Planet作者 | 歸去來自己“當家”的盒馬,開始加速謀生了。據盒馬官微消息,盒馬計劃今年開放生鮮供應鏈,將其生鮮商品送往食堂。目前,盒馬在上海已經與
  • 三星顯示已開始為AR設備研發硅基LED微顯示屏

    7月18日消息,據外媒報道,隨著蘋果首款頭顯產品Vision Pro在6月份正式推出,AR/VR/MR等頭顯產品也就將成為各大公司下一個重要的競爭領域,對顯示屏這一關
  • 英特爾Xe-HP項目終止,將專注Xe-HPC/HPG系列顯卡

    據10 月 31 日消息報道,英特爾高級副總裁兼加速計算系統和圖形事業部總經理 表示,Xe-HP“ Arctic Sound” 系列服務器 GPU 已經應用于 oneAPI devcloud 云服
Top 主站蜘蛛池模板: 曲松县| 玉山县| 清徐县| 德格县| 娄底市| 上思县| 汉中市| 钟祥市| 苍溪县| 曲沃县| 唐河县| 锦州市| 安福县| 房产| 昌图县| 东辽县| 黄梅县| 信宜市| 河东区| 都安| 闻喜县| 鄂托克前旗| 惠水县| 天水市| 武城县| 新安县| 福鼎市| 三河市| 民丰县| 开远市| 方城县| 正镶白旗| 五台县| 湖南省| 河北省| 浦江县| 留坝县| 邢台市| 潞西市| 皋兰县| 奈曼旗|