try:
r = requests.get(url, params={'s': thing})
except requests.ConnectionError, e:
print e #should I also sys.exit(1) after this?
¿Es esto correcto? ¿Hay una mejor manera de estructurar esto? ¿Esto cubrirá todas mis bases?
python
request
python-requests
John Smith
fuente
fuente
Respuestas:
Eche un vistazo a los documentos de excepción de Solicitudes . En breve:
Para responder a su pregunta, lo que muestre no cubrirá todas sus bases. Solo detectará los errores relacionados con la conexión, no los que caducan.
Qué hacer cuando detecta la excepción depende realmente del diseño de su script / programa. ¿Es aceptable salir? ¿Puedes seguir y volver a intentarlo? Si el error es catastrófico y no puede continuar, entonces sí, puede abortar su programa levantando SystemExit (una buena manera de imprimir un error y llamar
sys.exit
).Puede capturar la excepción de clase base, que manejará todos los casos:
O puede atraparlos por separado y hacer cosas diferentes.
Como Christian señaló:
Un ejemplo:
Imprimirá:
fuente
socket.timeout
excepciones si está usando un tiempo de espera: github.com/kennethreitz/requests/issues/1236Una sugerencia adicional para ser explícito. Parece mejor pasar de lo específico a lo general hacia abajo en la pila de errores para obtener el error deseado, para que los específicos no se enmascaren por el error general.
vs
fuente
El objeto de excepción también contiene la respuesta original
e.response
, que podría ser útil si necesita ver el cuerpo del error en respuesta del servidor. Por ejemplo:fuente