记录并引发异常

时间:2018-10-05 19:35:52

标签: python python-3.x error-handling

我想保持可靠的日志记录系统运行,但是也有必要引发异常。这段代码完成了我要去的工作,但是看起来很笨拙,而且不太像Python。有什么更好的选择?

import logging

if not condition_met:
    missing = set_one - set_two
    logging.error('Missing keys: {}'.format(missing))
    raise ValueError('Missing keys: {}'.format(missing))

2 个答案:

答案 0 :(得分:2)

您可以在此时捕获异常并记录错误,因此,如果发生另一个异常,您也可以记录该异常并将其传播到上游。

try:
   # some code

    if not condition_met:
        missing = set_one - set_two
        raise ValueError('Missing keys: {}'.format(missing))   

except Exception as e:  # or ValueError to narrow it down
    logging.error(str(e))
    raise   # propagate the exception again

请注意,不记录异常而不记录回溯将导致未完成的事情,特别是如果异常是在上游捕获并处理的。您很有可能永远不会修复该特定错误。

答案 1 :(得分:0)

(希望这也会对其他用户有所帮助)。您可以使用

logger.exception("Your message")

例如,以便将所有堆栈都打印到您的日志文件中。

您可以找到有趣的文章here