Hey, je me demande comment gérer des codes d'erreur spécifiques. Par exemple, [Errno 111] Connection refused
Je veux attraper cette erreur spécifique dans le module de socket et imprimer quelque chose.
Si vous voulez obtenir le code d'erreur, cela semble faire l'affaire.
import errno
try:
socket_connection()
except socket.error as error:
if error.errno == errno.ECONNREFUSED:
print(os.strerror(error.errno))
else:
raise
Vous pouvez rechercher errno
codes d'erreur .
Sur les plates-formes Unix, vous pouvez au moins effectuer les opérations suivantes.
import socket, errno
try:
# Do something...
except socket.error as e:
if e.errno == errno.ECONNREFUSED:
# Handle the exception...
else:
raise
Avant Python 2.6, utilisez e.args[ 0 ]
au lieu de e.errno
.
Je développe sur Windows et me suis retrouvé dans la même situation. Mais le message d'erreur contient toujours le numéro d'erreur. En utilisant ces informations, je viens de convertir l'exception en chaîne str(Exception)
, de convertir le code d'erreur que je veux vérifier en chaîne str(socket.errno.ERRORX)
et de vérifier si le code d'erreur figure dans l'exception.
Exemple pour une exception de réinitialisation de connexion:
except Exception as errorMessage:
if str(socket.errno.ECONNRESET) in str(errorMessage):
print("Connection reset")
#etc...
Cela évite les solutions spécifiques à l'environnement local mais n'est toujours pas indépendant de la plate-forme, malheureusement.