每次我捕获异常时我都要记录它的内容,所以将它放在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))
答案 0 :(得分:-1)
我建议在logger
课程中忽略GatewayException
来电。
您当前编写的代码使用的是全局 logger
对象,如果您要使用,则会违反封装并且可能会出现问题记录器在各种类/模块/等的其他地方。
要解决该问题,您可以将logger
传递给GatewayException
构造函数,但如果您实际上并不希望在特定内容中记录某些内容,该怎么办? except
点?
为了实现这种可能性,如果您将消息封装在异常中,并省略logger
调用,您可以在except
点选择是否记录错误,使用本地logger
对象,无论可能是什么。
为确保格式一致,您可以将格式/输出代码集中到__str__
函数中,该函数从内部引用class
个成员。