Python3 中“除了 socket.error as (code, msg)”的等价物是什么?

Fra*_*Boi 4 python try-except

try/except由于以下行,我在 Python2 中有这个块不能在 Python3 中运行except socket.error as (code, msg)

try:
    (conn, (ip,port)) = tcpServer.accept()
except socket.error as (code, msg):
    if code != errno.EINTR:
        raise
    else:
        break
Run Code Online (Sandbox Code Playgroud)

Python3 中的等价物是什么?有没有一种方法适用于两个 Python 版本?

Sim*_*onF 5

根据删除旧例外的PEP PEP 3151,这种方式应该有效:

try:
    (conn, (ip,port)) = tcpServer.accept()
except socket.error as e:
    if e.errno != errno.EINTR:
        raise
    else:
        break
Run Code Online (Sandbox Code Playgroud)

需要注意的是在Python> 3.3socket.error是一个过时的别名OSError