今天我們要聊聊Python里的那些“意外”事兒——異常處理!別擔心,學會了這些策略,你的代碼就能穩如老狗,即便遇到坑也能優雅地跳過去。
想象一下,你正開心地讀取一個文件,突然“啪”,文件不存在!這時候,就需要try-except來救場了。
try: with open("不存在的文件.txt", 'r') as file: content = file.read() print(content)except FileNotFoundError: print("哎呀,文件沒找到呢!")
這段代碼的意思是:“嘿,Python,試試看打開這個文件,如果不行(遇到FileNotFoundError),就執行下面的安慰話?!?span style="display:none">hin28資訊網——每日最新資訊28at.com
有時候,不是只有單一的問題,這時候我們可以用一個except捕獲多個異常。
try: # 假設這里可能拋出多種異常 result = 10 / 0 print(result)except (ZeroDivisionError, TypeError) as e: print(f"出錯了,原因可能是:{e}")
這里我們同時看著零除錯誤和類型錯誤,就像帶著多層防護網。
當你不確定會遇到什么異常,可以使用Exception來捕獲所有非系統退出異常。
try: # 可能引發任何異常的操作 eval(input("輸入一些危險的代碼吧:"))except Exception as e: print(f"安全第一,阻止了不安全的操作:{e}")
但要小心,別濫用,否則錯誤信息可能會變得難以追蹤哦!
對于復雜的程序,精確捕獲特定異常更有利于問題定位。
try: number = int(input("請輸入一個數字:")) print(10 / number)except ValueError: print("輸入的不是數字哦!")except ZeroDivisionError: print("不能除以零!")
這樣,用戶得到的反饋更加具體,而不是籠統的錯誤信息。
當一個異常觸發另一個異常時,保持原始異常信息很重要。
try: raise ValueError("起始錯誤")except ValueError as ve: try: raise ZeroDivisionError("由上一個錯誤引發") except ZeroDivisionError as zde: print("發生了兩個錯誤!原始錯誤是:", ve) raise zde from ve # 保留錯誤鏈
這樣,你可以知道錯誤是如何一層層傳遞的。
else:在沒有異常發生時執行。
finally:無論是否發生異常都會執行,非常適合資源清理。
try: # 嘗試執行的代碼 x = 5except ValueError: print("處理異常")else: print("一切順利,x =", x)finally: print("不管怎樣,我都要執行清理工作")
有時候,Python自帶的異常不夠用,我們就可以DIY啦!
class CustomError(Exception): def __init__(self, message): self.message = messagetry: raise CustomError("這是我的自定義錯誤!")except CustomError as ce: print(ce.message)
這樣,你的程序就有了自己的語言!
用with不僅可以自動管理資源,還能優雅地處理異常。
with open("test.txt", 'w') as file: try: file.write("你好,世界!") file.non_existent_method() # 假設這里有一個不存在的方法 except AttributeError: print("文件操作出了點小狀況")
即使內部有錯誤,文件也會被正確關閉。
try: # 可能出錯的代碼except: pass # 不推薦這樣做!
這樣做會隱藏錯誤,讓調試變成一場噩夢。記得總是指定你想要捕獲的異常類型。
雖然不常見,但在某些情況下,利用異常來改變程序流也是可以的,但要謹慎使用。
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或使用其他邏輯。
好啦,以上就是Python異常處理的十大策略,希望它們能讓你的代碼之旅更加平穩愉快。
本文鏈接:http://www.tebozhan.com/showinfo-26-90344-0.htmlPython 異常處理的十個實用策略
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: 優秀 C# 通信框架推薦及介紹