是否是IOError的python子类中的所有HttpError

时间:2009-11-08 12:07:52

标签: python ioerror

在我们的代码中,我们捕获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')

1 个答案:

答案 0 :(得分:2)

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

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

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

来自usawaretech的评论:

  

你怎么知道它是一个插座   错误?我的代码是这样的:   尝试:risky_code();除了IOError:   logger.debug( '...');提高;如我一般   假设HttpError是一个子类   IOError,当我得到该异常时,   我假设它被记录下来。那里   我的日志中没有任何内容

我猜这是一个socket.error,因为我使用了index of the standard library documentation,因为我之前遇到过这个错误。

您使用的是哪个版本的Python?我猜这是Python 2.5或更早版本。

如果您的目的是记录并重新引发异常,那么最好使用裸:

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

此外,您可以使用exception.__module__找到定义异常类的模块。

相关问题