通常,您将阅读create_apple()的文档,以了解它可以引发哪些异常,并捕捉这些异常。在
不过,与Java不同,Python函数不需要声明所有可能引发的异常,因此任何函数都可以引发许多不同的异常。在
你最好的选择可能是在结尾处出现某种笼统的情况:try:
create_apple(x,y,z)
except NoTreeFound:
print 'could not find an apple tree'
except BasketFull:
print 'apple basket is already full of apples'
except Winter:
print 'Cannot create apples in winter!'
except Exception as e:
print 'an unknown error occurred, message is: %s' % str(e)
更新
看来您是在寻找关于函数应该如何引发异常的建议,而不是调用方应该如何捕捉异常。在
如果您的函数可能以几种不同的方式失败,那么为每个失败条件定义特定的异常对调用者来说是很方便的,因为它可以轻松地分别处理每个失败条件(如我在上面的示例中所示)
但是,如果您的函数真的只能以一种方式失败,在某些情况下细节可能略有不同,那么最好的做法可能是使用特定的消息引发一个通用异常:
^{pr2}$
最后这是一个设计决定。两种方法都有效。在