假设我有一个引发异常的方法:

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中有什么类似于这种机制的东西,但通常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-badShould I use an exception specifier in C++?

关于python - 如何提示程序员在python中使用tryexcept子句?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30192324/

10-12 19:25