python項目中出現上下文管理器異常如何解決?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
成都創新互聯公司服務項目包括玉門網站建設、玉門網站制作、玉門網頁制作以及玉門網絡營銷策劃等。多年來,我們專注于互聯網行業,利用自身積累的技術優勢、行業經驗、深度合作伙伴關系等,向廣大中小型企業、政府機構等提供互聯網行業的解決方案,玉門網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到玉門省份的部分城市,未來相信會繼續擴大服務區域并繼續獲得客戶的支持與信任!1、異常說明
異常可以在__exit__ 進行捕獲并由你自己決定如何處理,是拋出還是不拋出。在__exit__ 里返回 True(沒有return 就默認為 return False),就相當于告訴 Python解釋器,這個異常我們已經捕獲了,不需要再往外拋了。
在 寫__exit__ 函數時,需要注意的事,它必須要有這三個參數:
exc_type:異常類型
exc_val:異常值
exc_tb:異常的錯誤棧信息
當主邏輯代碼沒有報異常時,這三個參數將都為None。
如果我們需要對異常做特殊處理,就可以在這個方法中實現自定義邏輯。
之所以 with 能夠自動關閉文件資源,就是因為內置的文件對象實現了上下文管理器協議,這個文件對象的 __enter__ 方法返回了文件句柄,并且在 __exit__ 中實現了文件資源的關閉,另外,當 with 語法塊內有異常發生時,會拋出異常給調用者。
class File: def __enter__(self): return file_obj def __exit__(self, exc_type, exc_value, exc_tb): # with 退出時釋放文件資源 file_obj.close() # 如果 with 內有異常發生 拋出異常 if exc_type is not None: raise exception
在__exit__方法中處理異常實例擴展:
class File(object): def __init__(self, file_name, method): self.file_obj = open(file_name, method) def __enter__(self): return self.file_obj def __exit__(self, type, value, traceback): print("Exception has been handled") self.file_obj.close() return True with File('demo.txt', 'w') as opened_file: opened_file.undefined_function() # Output: Exception has been handled
關于python項目中出現上下文管理器異常如何解決問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創新互聯行業資訊頻道了解更多相關知識。
網站題目:python項目中出現上下文管理器異常如何解決-創新互聯
分享鏈接:http://vcdvsql.cn/article6/cessog.html
成都網站建設公司_創新互聯,為您提供用戶體驗、全網營銷推廣、Google、靜態網站、品牌網站制作、外貿建站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯