跳到内容

位置错误的裸raise语句 (PLE0704)

源自 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`")