跳到内容

raise-vanilla-class (TRY002)

源自 tryceratops linter。

作用

检查直接引发 ExceptionBaseException 的代码。

为什么这不好?

处理此类异常需要使用 except Exceptionexcept BaseException。这些将捕获几乎任何引发的异常,包括失败的断言、除以零等等。

最好引发您自己的异常,或者更具体的内置异常,这样您可以避免过度捕获您不打算处理的异常。

示例

def main_function():
    if not cond:
        raise Exception()


def consumer_func():
    try:
        do_step()
        prepare()
        main_function()
    except Exception:
        logger.error("Oops")

建议改为

def main_function():
    if not cond:
        raise CustomException()


def consumer_func():
    try:
        do_step()
        prepare()
        main_function()
    except CustomException:
        logger.error("Main function failed")
    except Exception:
        logger.error("Oops")