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