2

在我们的代码中,我们捕获 IOError 并在重新引发之前记录它。我收到“对等方重置连接”,但日志中没有任何内容。“对等连接重置”是python中IOError的子类吗?

     .....
  File "/usr/lib/python2.5/httplib.py", line 1047, in readline
    s = self._read()
  File "/usr/lib/python2.5/httplib.py", line 1003, in _read
    buf = self._ssl.read(self._bufsize)
error: (104, 'Connection reset by peer')
4

1 回答 1

2

您粘贴的堆栈跟踪看起来像一些error带有参数的类的异常(104, 'Connection reset by peer)。

所以看起来它根本不是 HTTPError 异常。在我看来,它实际上是一个socket.error。这个类确实是 Python 2.6 以来 IOError 的子类。

但我想这不是你的问题,因为你问的是 HttpError 异常。您能否重新表述您的问题以澄清您的假设和期望?

来自usawaretech的评论:

你怎么发现它是一个套接字错误?我的代码类似于:try:risky_code(); 除了 IOError: logger.debug('...'); 增加; 因为我假设 HttpError 是 IOError 的子类,所以当我得到那个异常时,我假设它被记录了。我的日志中没有任何内容

我猜是socket.error,因为我使用了标准库文档的索引,也因为之前遇到过这个错误。

你使用的是什么版本的 Python?我猜它是 Python 2.5 或更早版本。

如果您的意图是记录并重新引发异常,则最好使用裸异常:

try:
    risky_code()
except:
    logger.debug(...)
    raise

此外,您可以找到使用exception.__module__.

于 2009-11-08T12:25:54.990 回答