【发布时间】:2015-07-23 09:54:20
【问题描述】:
假设我有一个引发异常的方法A:
def methodA(x, y):
if y != 0:
z = x / y
return z
else:
raise ZeroDivisionError("zero can not be a denominator")
在methodB中我调用了methodA而不处理异常:
def methodB(x, y):
print methodA(x, y)
在这里,我想要一些可以警告我在方法 B 中存在ZeroDivisionError 的潜在风险的东西,最好抓住它。
有什么办法可以在methodA中添加一些特定的代码,或者我们可以使用一些工具发现我忽略了一些重要的异常?
【问题讨论】:
-
我对此表示怀疑 - 静态分析如何知道您是否故意让异常渗透到更明智的位置以捕获它(这可能根本不在您的代码中,记住!)或有只是忘记处理了吗?
methodA的文档说明它可以raise ZeroDivisionError是有帮助的,否则由消费者自行处理。 -
或者,第三个选项,您是否已经处理过,例如通过检查
methodB中的y > 0(或调用它的任何地方)? -
Nitpick:
y是这里的分母,但例外将其称为分子。
标签: python exception-handling static-analysis pylint try-except