我在运行 Streaming API 时遇到了 tweepy 问题,但我的问题不仅仅与 tweepy 直接相关。
我遇到了多个异常,我认为我可以暂时“捕获/通过”,作为临时解决方案,直到找出问题所在。
到目前为止,tweepy 已经抛出了 5 个不同的错误(IncompleteRead、ProtocolError、UnicodeDecodeError、AttributeError、TypeError)
,它们都是由 API 的过滤器产生的,而不是由我获取数据。
它们在回溯中的共同点是:
twitterStream.filter(locations=[-125.22, 31.61, -104.86, 49.0, -104.86, 26.11, -66.94, 49.03])
IncompleteRead
和 ProtocolError
与 tweepy 使用的不同包相关。但是 (UnicodeDecodeError, AttributeError, TypeError)
是 Concrete Exceptions 。
我的问题:
我的假设是否正确? Exception基类可以捕获所有这些(最后 3 个)吗?还是说这是不正确的?
最佳答案
异常状态的文档
All built-in, non-system-exiting exceptions are derived from this class
因此 Exception 基类应该能够捕获这些异常,因为它们是非系统退出的(系统退出异常的一个示例是 SystemExit)。如果您愿意,可以快速测试:
try:
raise AttributeError
except Exception:
print("We caught an exception!")
也就是说,盲目捕获 Exception 基类通常被认为是一个坏主意,因为您可能最终会捕获您不希望捕获的异常。
关于python - "Exception"是否捕获所有其他 "Concrete Exceptions",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31466753/