是"例外"捕获所有其他"具体例外"

时间:2015-07-17 00:35:52

标签: python exception python-3.x exception-handling

我在运行Streaming API时遇到了tweepy问题,但我的问题并不仅仅与tweepy直接相关。

我一直有多个例外,我认为我可以"抓住/通过"目前,作为一种临时解决方案,直到我找到问题所在。

截至目前,tweepy已经抛出了5个不同的错误(IncompleteRead, ProtocolError, UnicodeDecodeError, AttributeError, TypeError),而且这些错误全部来自API的过滤器,而不是来自我获取数据。

他们在Traceback中的共同点是:

twitterStream.filter(locations=[-125.22, 31.61, -104.86, 49.0, -104.86, 26.11, -66.94, 49.03])

IncompleteReadProtocolError与tweepy使用的不同软件包相关。但(UnicodeDecodeError, AttributeError, TypeError)Concrete Exceptions

我的问题:

我是否可以假设Exception基类可以捕获所有这些(最后3个)?或者这是不正确的?

1 个答案:

答案 0 :(得分:1)

异常状态的文档

  

所有内置的,非系统退出的异常都来自此类

所以Exception基类应该能够捕获那些,因为它们是非系统退出的(系统退出异常的一个例子是SystemExit)。如果您愿意,可以快速测试:

try:
    raise AttributeError
except Exception:
    print("We caught an exception!")

也就是说,盲目地捕获异常基类通常被认为是一个坏主意,因为你可能最终会捕获你不想要的异常。