跳到内容

misplaced-bare-raise (PLE0704)

添加于 0.5.0 · 相关议题 · 查看源码

源自 Pylint 代码检查工具。

作用

检查异常处理器外部的裸 raise 语句。

为什么这不好?

不带异常对象的裸 raise 语句会重新抛出当前作用域中处于激活状态的最后一个异常,通常用于异常处理器中以重新抛出已捕获的异常。

如果在异常处理器之外使用裸 raise,由于缺乏激活的异常,它会引发错误。

请注意,finally 块中的裸 raise 在某些情况下可以工作(即当异常在 try 块中被触发时),但应避免使用,因为它可能导致令人困惑的行为。

示例

from typing import Any


def is_some(obj: Any) -> bool:
    if obj is None:
        raise

建议改为

from typing import Any


def is_some(obj: Any) -> bool:
    if obj is None:
        raise ValueError("`obj` cannot be `None`")