Saltar al contenido

Manejo de excepciones en Python – PythonForBeginners.com

Visión general

En esta publicación, cubriremos cómo Python maneja los errores con excepciones.

¿Qué es una excepción?

Una excepción es un error que ocurre durante la ejecución de un programa. Cuando eso
ocurre un error, Python genera una excepción que se puede manejar, lo que evita su
programa para bloquearse.

¿Por qué utilizar Excepciones?

Las excepciones son convenientes de muchas maneras para manejar errores y condiciones especiales.
en un programa. Cuando crea que tiene un código que puede producir un error,
puede utilizar el manejo de excepciones.

Plantear una excepción

Puede generar una excepción en su propio programa utilizando la excepción de aumento
declaración.

Generar una excepción interrumpe la ejecución del código actual y devuelve la excepción
volver hasta que se manipule.

Errores de excepción

A continuación se muestran algunos errores de excepciones comunes en Python:
IOError
Si el archivo no se puede abrir.

ImportError
Si Python no puede encontrar el módulo

ValueError
Se genera cuando una función o operación incorporada recibe un argumento que tiene la
tipo correcto pero un valor inapropiado

Teclado Interrumpido
Se genera cuando el usuario presiona la tecla de interrupción (normalmente Control-C o Eliminar)

EOFError
Se genera cuando una de las funciones integradas (input () o raw_input ()) alcanza un
condición de fin de archivo (EOF) sin leer ningún dato

Ejemplos de errores de excepción

Ahora, cuando sepamos lo que significan algunos de los errores de excepción, veamos algunos
ejemplos:


except IOError:
print('An error occurred trying to read the file.')
except ValueError:
print('Non-numeric data found in the file.')
except ImportError:
print "NO module found"
except EOFError:
print('Why did you do an EOF on me?')
except KeyboardInterrupt:
print('You cancelled the operation.')
except:
print('An error occurred.')

Intente utilizar la menor cantidad posible de bloques de prueba e intente distinguir la falla
condiciones por el tipo de excepciones que arrojan.

Configurar bloques de manejo de excepciones

Para usar el manejo de excepciones en Python, primero debe tener un catch-all excepto
cláusula.

Las palabras “probar” y “excepto” son palabras clave de Python y se utilizan para detectar excepciones.

prueba-excepto [exception-name] (ver ejemplos arriba) bloques

Entrenamiento de Python recomendado

Para el entrenamiento de Python, nuestra principal recomendación es DataCamp.

El código dentro de la cláusula try se ejecutará sentencia por sentencia.

Si ocurre una excepción, el resto del bloque try se omitirá y el
excepto se ejecutará la cláusula.

try:
some statements here
except:
exception handling
Let's see a short example on how to do this:

try:
print 1/0
except ZeroDivisionError:
print "You can't divide by zero, you're silly."

¿Como funciona?

El manejo de errores se realiza mediante el uso de excepciones que se detectan en el intento.
bloques y manipulado en excepto bloques. Si se encuentra un error, un bloque de prueba
la ejecución del código se detiene y se transfiere al bloque except.

Además de usar un bloque except después del bloque try, también puede usar el
finalmente bloquear.

El código en el bloque finalmente se ejecutará independientemente de si una excepción
ocurre.

Ejemplo de código

Escribamos un código para ver qué sucede cuando no usa el manejo de errores en su
programa.

Este programa le pedirá al usuario que ingrese un número entre 1 y 10, y luego imprima
el número.

number = int(raw_input("Enter a number between 1 - 10"))
print "you entered number", number

Este programa funciona perfectamente siempre y cuando el usuario ingrese un número, pero ¿qué
sucede si el usuario pone algo más (como una cadena)?

Enter a number between 1 - 10
hello

Puedes ver que el programa nos arroja un error cuando ingresamos una cadena.


Traceback (most recent call last):
File "enter_number.py", line 1, in
number = int(raw_input("Enter a number between 1 - 10
"))
ValueError: invalid literal for int() with base 10: 'hello'

ValueError es un tipo de excepción. Veamos cómo podemos usar el manejo de excepciones para
arreglar el programa anterior

import sys
print "Lets fix the previous code with exception handling"

try:
number = int(raw_input("Enter a number between 1 - 10"))

except ValueError:
print "Err.. numbers only"
sys.exit()

print "you entered number", number

Si ahora ejecutamos el programa e ingresamos una cadena (en lugar de un número), podemos ver
que obtenemos una salida diferente.

Lets fix the previous code with exception handling
Enter a number between 1 - 10
hello
Err.. numbers only

Prueba… excepto… cláusula else

La cláusula else en una declaración try, except debe seguir todas las cláusulas excepto, y es
útil para el código que debe ejecutarse si la cláusula try no genera un
excepción.

tratar:
data = something_that_can_go_wrong

excepto IOError:
handle_the_exception_error

demás:
doing_different_exception_handling
Las excepciones en la cláusula else no son manejadas por las cláusulas except anteriores.

Asegúrese de que la cláusula else se ejecute antes del bloque finalmente.

Probar ... finalmente cláusula

La cláusula finalmente es opcional. Se pretende definir acciones de limpieza que
debe ser ejecutado en todas las circunstancias

tratar:
subir KeyboardInterrupt

finalmente:
imprimir '¡Adiós, mundo!'
...
¡Adiós mundo!
Teclado Interrumpido

Una cláusula finalmente se ejecuta siempre antes de salir de la sentencia try, ya sea
se ha producido una excepción o no.
Recuerde que si no especifica un tipo de excepción en la línea excepto,
detectar todas las excepciones, lo cual es una mala idea, ya que significa que su programa ignorará
errores inesperados, así como aquellos para los que el bloque except está realmente preparado para
encargarse de.

Más lectura

http://en.wikibooks.org/wiki/Python_Programming/Exceptions

http://www.linuxjournal.com/article/5821

http://docs.python.org/2/library/exceptions.html

http://docs.python.org/2/tutorial/errors.html

http://stackoverflow.com/questions/855759/python-try-else

Entrenamiento de Python recomendado

Para el entrenamiento de Python, nuestra principal recomendación es DataCamp.