跳到内容

default-except-not-last (F707)

派生自 Pyflakes 代码检查器。

作用

检查处理所有异常的 except 代码块,但不是 try 语句中的最后一个 except 代码块。

为什么这不好?

try 代码块中引发异常时,将按顺序评估 except 代码块,并执行第一个匹配的代码块。如果一个 except 代码块处理所有异常,但不是最后一个代码块,Python 将引发 SyntaxError,因为后面的代码块将永远不会被执行。

示例

def reciprocal(n):
    try:
        reciprocal = 1 / n
    except:
        print("An exception occurred.")
    except ZeroDivisionError:
        print("Cannot divide by zero.")
    else:
        return reciprocal

建议改为

def reciprocal(n):
    try:
        reciprocal = 1 / n
    except ZeroDivisionError:
        print("Cannot divide by zero.")
    except:
        print("An exception occurred.")
    else:
        return reciprocal

参考