多个str用于异常

时间:2015-07-14 09:52:50

标签: python python-2.7

Python 2.7

我有自己的例外:

class NoSourceFileError(Exception):
    def __init__(self, logger, massage):
        Exception.__init__(self, massage)
        logger.logger.info(massage)

它的调用是:

    ...
    else:
        raise NoSourceFileError('ERROR: can not find file %s for %s' % (add_file, add_name))

问题就在这里 - 我传递了两个变量(add_fileadd_name) - 但__init__只能接受一个var(message)。

我如何通过他们两个?

我尝试使用*args - 但无法使其正常工作。

Logger - 我记录的附加课程。

1 个答案:

答案 0 :(得分:2)

问题不在于string,这很好。您将logger传递给exception

删除logger参数(和用法),它将起作用:

>>> class NoSourceFileError(Exception):
...     def __init__(self, message):
...         Exception.__init__(self, message)
...

>>> raise NoSourceFileError('ERROR: can not find file %s for %s' % ('x', 'y'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
__main__.NoSourceFileError: ERROR: can not find file x for y
>>>

我不确定logger是什么意思。但是如果你想使用它,你需要在argument时将它作为exception传递给它。

在字符串格式化上,假设它正确完成,它本身就会被视为一个参数。因此不能超过1。

正如@werkritter所说,如果你确实想使用logger而不必将其作为参数传递 - 全局定义它。我将假设它是为了记录错误,在这种情况下,将它全局定义是有意义的。