[英]Are there any caveats to log messages in custom exception constructor?
每次我捕獲異常時,我都希望對其進行記錄,因此將其放入Exception構造函數中是否明智? 我在這里挖自己的墳墓嗎?
import logging
logger = logging.getLogger(__name__)
class GatewayException(Exception):
message = None
def __init__(self, message, *args, **kwargs):
super(GatewayException, self).__init__(message)
self.message = message
self.__dict__.update(kwargs)
logger.error(message)
for key, value in kwargs.items():
logger.error("{} : {}".format(key, value))
我建議在GatewayException
類本身中省略logger
調用。
您當前編寫的代碼使用全局 logger
對象,該對象違反了封裝,如果要在其他類別/模塊/等其他位置使用記錄器,則可能會出現問題。
為了解決這個問題,你可以在通過logger
到GatewayException
構造,但如果你實際上並不希望記錄在一個特定的東西有什么except
呢?
為了允許這種可能性,如果將消息封裝在異常內,而忽略了logger
調用,則可以在except
選擇是否使用本地logger
對象logger
錯誤,無論使用哪種方法。
為確保格式一致,可以將格式/輸出代碼集中到一個__str__
函數中,該函數從內部引用class
成員。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.