如何提示程序员在python中使用try except子句?
How to prompt programmers to use try except clause in python?
假设我有一个引发异常的方法 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中添加一些特定的代码,或者我们可以使用一些工具来发现我忽略了一些重要的异常?
我不知道 Python 中有任何接近这种机制的东西,但一般来说 methodA
不应该关心 methodB
是否处理异常。在每个级别(例如 methodB
),只应捕获 methodB
可以处理的异常(在某些 documented/specified 级别)。如果 methodB
无法处理例如 ZeroDivisionError
那么也许没有人可以(然后不抓住它是正确的做法),或者,可能是在某些调用图中,methodC
将抓住它并在 methodC
.
的上下文中做正确的事情
另请注意 Java 的相关(但相反)问题:Java: checked vs unchecked exception explanation
对于 C++ https://softwareengineering.stackexchange.com/questions/114338/why-are-exception-specifications-bad and Should I use an exception specifier in C++?
假设我有一个引发异常的方法 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中添加一些特定的代码,或者我们可以使用一些工具来发现我忽略了一些重要的异常?
我不知道 Python 中有任何接近这种机制的东西,但一般来说 methodA
不应该关心 methodB
是否处理异常。在每个级别(例如 methodB
),只应捕获 methodB
可以处理的异常(在某些 documented/specified 级别)。如果 methodB
无法处理例如 ZeroDivisionError
那么也许没有人可以(然后不抓住它是正确的做法),或者,可能是在某些调用图中,methodC
将抓住它并在 methodC
.
另请注意 Java 的相关(但相反)问题:Java: checked vs unchecked exception explanation
对于 C++ https://softwareengineering.stackexchange.com/questions/114338/why-are-exception-specifications-bad and Should I use an exception specifier in C++?