跳到内容

return-in-try-except-finally (SIM107)

源自 flake8-simplify 代码检查器。

作用

检查 try-exceptfinally 块中的 return 语句。

为什么这不好?

finally 块中的 return 语句将始终被执行,即使在 tryexcept 块中引发了异常。这可能会导致意外的行为。

示例

def squared(n):
    try:
        sqr = n**2
        return sqr
    except Exception:
        return "An exception occurred"
    finally:
        return -1  # Always returns -1.

建议改为

def squared(n):
    try:
        return_value = n**2
    except Exception:
        return_value = "An exception occurred"
    finally:
        return_value = -1
    return return_value

参考