Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Puede el servidor urlerror en pythonrpc generar una excepción?

¿Puede el servidor urlerror en pythonrpc generar una excepción?

1.URLError

Primero explique las posibles causas de URLError:

No hay conexión de red, es decir, la computadora no puede acceder a Internet.

No se puede conectar al servidor específico

El servidor no existe.

En el código, necesitamos usar declaraciones try-except para rodear y capturar las excepciones correspondientes. Aquí tienes un ejemplo para sentir primero su coquetería.

Importar urllib2

requset = urllib2. request("")

Pruebe:

urllib2.urlopen(requset)

Excepto urllib2. URLError, e:

Imprimir e. Razón

Utilizamos el método URL para acceder a un sitio web inexistente y los resultados de ejecución son los siguientes:

[Número de error 11004] getaddrinfo falló

El código de error mostrado es 11004 y la causa del error es la falla de getaddrinfo.

2.HTTPError

HTTPError es una subclase de URLError. Cuando realiza una solicitud utilizando el método URL, hay un objeto de respuesta en el servidor que contiene un "código de estado" numérico. Por ejemplo, si la respuesta es "redireccionar" y necesita ir a otra dirección para obtener el documento, urllib2 lo manejará.

Para otras cosas que no se pueden manejar, urlopen generará un HTTPError correspondiente al estado correspondiente. Los códigos de estado HTTP indican el estado de la respuesta devuelta por el protocolo HTTP. Los códigos de estado se resumen a continuación:

100: Continuar El cliente debe continuar enviando la solicitud. El cliente debe continuar enviando el resto de la solicitud o ignorar esta respuesta si la solicitud ya se completó.

101: Cambio de protocolos Después de enviar la última línea en blanco de esta respuesta, el servidor cambiará a los protocolos definidos en el encabezado del mensaje de actualización. Sólo se deben tomar medidas similares cuando cambiar a un nuevo protocolo sea más beneficioso.

102: Continuar procesando el código de estado de la extensión WebDAV (RFC 2518), lo que significa que el procesamiento continuará.

200: Solicitud procesada con éxito: obtenga el contenido de la respuesta y procese.

201: La solicitud se completó y como resultado se creó un nuevo recurso. El URI del recurso recién creado se puede manejar en la entidad de respuesta: no se encontrará en el rastreador.

202: La solicitud fue aceptada, pero el procesamiento no se ha completado. Método de procesamiento: bloqueo y espera.

204: El servidor ha completado la solicitud, pero no se ha devuelto información nueva. Si el cliente es un agente de usuario, no necesita actualizar su propia vista de documento para este fin. Disposición: Descartar

300: este código de estado no lo utilizan directamente las aplicaciones HTTP/1.0, pero se utiliza como interpretación predeterminada de las respuestas de tipo 3XX. Hay varios recursos solicitados disponibles. Método de procesamiento: si se puede procesar en el programa, se procesará más; si no se puede procesar en el programa, se descartará.

301: Al recurso solicitado se le asignará una URL permanente para que pueda acceder al recurso a través de esa URL en el futuro. Solución: redirigir a la URL especificada.

302: El recurso solicitado se guarda temporalmente en una URL diferente. Solución: redirigir a una URL temporal.

304: El recurso solicitado no ha sido actualizado. Método de eliminación: Desechar.

400: Método de procesamiento de solicitud ilegal: descartar

401: Método de procesamiento no autorizado: descartar.

403: No hay modo de procesamiento: descartar

404: No se encontró ningún método de procesamiento: darse por vencido.

500: Error interno del servidor El servidor encontró una condición inesperada que le impidió completar el procesamiento de la solicitud. En términos generales, este problema ocurre cuando hay un error en el código fuente del lado del servidor.

501: El servidor no puede reconocer que el servidor no admite la funcionalidad requerida por la solicitud actual. Cuando el servidor no reconoce el método solicitado y no puede soportar su solicitud de ningún recurso.

502: Puerta de enlace incorrecta Cuando un servidor que actúa como puerta de enlace o proxy intenta realizar una solicitud, recibe una respuesta no válida del servidor ascendente.

503: Error de servicio. Actualmente, el servidor no puede procesar la solicitud debido a un mantenimiento temporal del servidor o a una sobrecarga. Esta condición es temporal y se recuperará después de un tiempo.

Después de generar la instancia HTTPError, habrá un atributo de código, que es el número de error relevante enviado por el servidor.

Debido a que urllib2 puede ayudarlo a manejar redireccionamientos, es decir, se pueden procesar códigos que comienzan con 3. Los números en el rango de 100 a 299 indican éxito, por lo que solo puede ver los números de error del 400 al 599.

Escribamos un ejemplo para tener una idea. La excepción capturada es HTTPError, que tendrá un atributo de código, que es el código de error. Además, imprimimos el atributo de motivo, que es un atributo de su clase principal URLError.

Importar urllib2

req = urllib2. request('/cqcre ')

Prueba:

urllib2.urlopen(req)

Excepto urllib2. HTTPError, e:

Imprimir código e

Imprimir e motivo

Los resultados de ejecución son los siguientes

403

Prohibido

El código de error es 403 y el motivo del error es Prohibido, lo que significa que el acceso al servidor está prohibido.

Sabemos que la clase principal de HTTPError es URLError. Según la experiencia en programación, las excepciones de la clase principal deben escribirse después de las excepciones de la subclase. Si la subclase no puede detectarlo, puede detectar la excepción de la clase principal, por lo que el código anterior se puede reescribir así.

Importar urllib2

req = urllib2. request('/cqcre ')

Prueba:

urllib2.urlopen(req)

Excepto urllib2. HTTPError, e:

Imprimir código electrónico

excepto urllib2. URLError, e:

Imprimir e.Reason

De lo contrario:

Imprimir "OK"

Código de salida si se detecta HTTPError, y la excepción URLError no se volverá a manejar. Si no es un HTTPError, detectará la excepción URLError y generará el motivo del error.

Además, también puede agregar el atributo hasattr para determinar los atributos de antemano. El código se reescribe de la siguiente manera.

Importar urllib2

req = urllib2. request('/cqcre ')

Prueba:

urllib2.urlopen(req)

Excepto urllib2. URLError, e:

if hasattr(e, "código"):

Imprimir código electrónico

if hasattr(e, "razón"):

p>

Imprimir e. Motivo

De lo contrario:

Imprimir "OK"

Primero, juzgue los atributos anormales para evitarlos. errores de salida.