Python - 仅捕获被调用方法的异常

时间:2018-04-03 15:17:39

标签: python exception exception-handling

我想到,你可能想要捕获一个异常并做一些事情,只有当被调用的方法引发一些特定的异常,但是如果某个较低的方法引发了同样的异常(因为你只是准备处理顶层)一)。请考虑以下事项:

def a():
    raise ValueError('raised by a')

def b():
    a()
    # Some other processing is done, which raises ValueError
    raise ValueError('raised by b')

def c():
    try:
        b()
    except ValueError as e:
        print "got the exception"
        print e

在这种情况下,c“知道”b可能会引发ValueError并希望对其执行某些操作。但它不知道如何处理ValueError的其他情况......而且遗憾的是它会抓住它们。

>>> c()
got the exception
raised by a

有办法处理这种情况吗?

也可以批评这种方法;-)也许这不是一个非常干净的方法,试图处理最重要的例外。也许b应该只引发一个非内置异常......

0 个答案:

没有答案