每次我捕捉到异常时,我都想记录一些关于它的信息,所以明智的做法是将其放入异常构造函数中?我是在这里自掘坟墓吗?你知道吗
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
对象,不管是什么。你知道吗为了确保格式化的一致性,可以将格式化/输出代码集中到
__str__
函数中,该函数从内部引用class
成员。你知道吗相关问题 更多 >
编程相关推荐