第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

從內(nèi)部代碼捕獲拋出的庫(kù)錯(cuò)誤的最 Pythonic 方法是什么

從內(nèi)部代碼捕獲拋出的庫(kù)錯(cuò)誤的最 Pythonic 方法是什么

精慕HU 2023-08-15 16:57:56
我的代碼如下所示:# foo.pyfrom internallib.a import AA.some(new_schema)# a.pyfrom internallib.b import Bclass A:   @staticmethod   def some(schema_name):      B.thing(schema_name, other_parameter)# b.pyimport marshmallowclass B:   @staticmethod   def thing(schema_name, other_parameter):      marshmallow.class_registry.get_class(schema_name)Marshmallow 拋出一個(gè)錯(cuò)誤,我想為用戶捕獲并打印該錯(cuò)誤,然后退出(而不是僅打印堆棧跟蹤)。這里的具體細(xì)節(jié)是,當(dāng)調(diào)用 get_class 并且架構(gòu)尚未注冊(cè)時(shí),Marshmallow 會(huì)引發(fā)RegistryError。但是,這是完全預(yù)期的情況 - 可以嘗試添加架構(gòu),并且我想向用戶顯示該錯(cuò)誤 - 將其視為“找不到文件”錯(cuò)誤。堆棧跟蹤感覺級(jí)別太低,無(wú)法呈現(xiàn)。但是,A.some()在代碼中的許多地方都會(huì)調(diào)用它。執(zhí)行此操作的 pythonic 方法是什么?我的想法:將 marshmallow() 包裝在 try-except 中,打印出一些內(nèi)容,然后 exit()去我打電話的任何地方A.some(new_schema)并包裝它(這不是我的偏好,但如果有必要的話)還有別的事嗎?
查看完整描述

1 回答

?
慕神8447489

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊

解決方案

選項(xiàng) 1 - 所有A.some()調(diào)用者的統(tǒng)一行為:將調(diào)用B.thing()包裝在捕獲非常特定的異常A.some()中,同時(shí)使用記錄器在退出之前try except在塊中記錄錯(cuò)誤。except

選項(xiàng) 2 - 調(diào)用者所需的不同行為A.some():如果您希望根據(jù)調(diào)用 A.some() 的上下文來(lái)改變行為,那么您需要重構(gòu)以捕獲選項(xiàng) 1 中的相同錯(cuò)誤并引發(fā)您自己的內(nèi)部錯(cuò)誤,名為FileNotFound,每個(gè)調(diào)用者都A.some()能夠單獨(dú)處理行為。


查看完整回答
反對(duì) 回復(fù) 2023-08-15
  • 1 回答
  • 0 關(guān)注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)