这是定义和使用Python异常的合适方法吗?

2024-09-29 22:23:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我只想确定我是用正确的“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

Tags: 方法selflogreturnvaluedefevalexception
2条回答

(除了其他人已经提到的eval东西)

在您的except语句中,您应该编写except IPCClientError as exc:(注意“as”),这是更新的、与python3兼容的方法。(其他语法在Python3中不再有效,新语法在Python2.6及更高版本中可用)

eval(repr(self.val))

呃,你想在这里完成什么?self.val不是应该是字符串吗?在

避免repr附加的引号的方法是首先不要使用它。在

如果您担心传递给构造函数的值不是一个字符串,那么不管怎样,这将在构造函数中失败(尽管存在unicode的问题),并且您只会在自定义异常出现之前引发一个TypeError。在

至于如何处理异常,异常处理是一门艺术,而不是这个领域所能涵盖的内容。。。在

相关问题 更多 >

    热门问题