我只想确定我是用正确的“pythonic”方法来做的-我要确保我已经正确定义并使用了这个异常类。尤其是eval(repr())逻辑-主要是为了保持整洁,我理解为什么在repr()返回的字符串后面加上引号,但我不喜欢记录它们。在
class IPCClientError(Exception):
""" General IPC Client Exception class """
def __init__(self, value = "Unspecified error"):
self.val = value + ", see IPC client log for details."
def __str__(self):
return eval(repr(self.val))
当我提出例外时,我使用类似于:
^{pr2}$然后调用方法将有如下内容:
except IPCClientError, exc:
self.log.error(str(exc))
return ERROR
(除了其他人已经提到的
eval
东西)在您的
except
语句中,您应该编写except IPCClientError as exc:
(注意“as”),这是更新的、与python3兼容的方法。(其他语法在Python3中不再有效,新语法在Python2.6及更高版本中可用)呃,你想在这里完成什么?
self.val
不是应该是字符串吗?在避免
repr
附加的引号的方法是首先不要使用它。在如果您担心传递给构造函数的值不是一个字符串,那么不管怎样,这将在构造函数中失败(尽管存在
unicode
的问题),并且您只会在自定义异常出现之前引发一个TypeError
。在至于如何处理异常,异常处理是一门艺术,而不是这个领域所能涵盖的内容。。。在
相关问题 更多 >
编程相关推荐