跳到内容

error-instead-of-exception (TRY400)

源自 tryceratops linter。

有时提供修复。

作用

检查在记录异常时使用 logging.error 而不是 logging.exception 的情况。

为什么这不好?

logging.exception 会记录异常和回溯信息,而 logging.error 只记录异常。在记录异常时,前者更合适,因为回溯信息通常对调试很有用。

示例

import logging


def func():
    try:
        raise NotImplementedError
    except NotImplementedError:
        logging.error("Exception occurred")

建议改为

import logging


def func():
    try:
        raise NotImplementedError
    except NotImplementedError:
        logging.exception("Exception occurred")

修复安全性

当针对 logging.error 调用运行时,此规则的修复程序被标记为安全,但当针对其他类似 logger 的调用(例如 logger.error)标记时,则被标记为不安全,因为在检测 logging 模块之外的类似 logger 的调用时,该规则容易出现误报。

参考