假设我有一个引发异常的methodA:
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)
在这里,我想要一些可以警告我在methodB中存在ZeroDivisionError
的潜在风险的方法,最好抓住它。
有什么方法可以在methodA中添加某些代码,还是可以使用某种工具来发现我忽略了一些重要的异常?
python大神给出的解决方案
我不知道有什么类似的机制可以在Python中使用,但是通常methodA
不在乎methodB
是否处理异常。在每个级别(例如methodB
),仅应捕获methodB
可以处理的异常(在某些已记录/指定的级别)。如果methodB
无法处理例如ZeroDivisionError
,那么也许没人可以(然后不捕获它是正确的做法),或者可能是在某些调用图中,methodC
将捕获它并执行在methodC
上下文中什么是正确的。
还请注意Java的相关问题(但相反):Java: checked vs unchecked exception explanation
对于C++ https://softwareengineering.stackexchange.com/questions/114338/why-are-exception-specifications-bad和Should I use an exception specifier in C++?