эквивалент "кроме socket.error as (code, msg)" в python3 - PullRequest
0 голосов
/ 05 января 2019

У меня есть этот блок исключения в 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

Что такое эквивалент в python3? Есть ли способ, который работает в обеих версиях Python?

1 Ответ

0 голосов
/ 05 января 2019

Согласно PEP, который удалил старые исключения, PEP 3151 , этот способ должен работать:

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

Обратите внимание, что в Python> 3.3 socket.error это псевдоним для OSError.

...