Captura y manejo de excepciones
Cita con formato IEEE:
E. Bahit, "Captura y manejo de excepciones", in
Python Aplicado, 4th ed., EBRC Publisher, 2022, pp.
107–118
Cita con formato APA 7:
Bahit, E. (2022). Captura y manejo de excepciones. In
Python Aplicado (4th ed., pp. 107–118). EBRC Publisher.
Cita en línea:
(Bahit, 2022)
El código fuente de un programa puede fallar cuando se escribe mal la sintaxis, o se comete algún error de escritura. Este tipo de errores son detectados por el intérprete, antes de la ejecución del código.
Existen casos en los que el fallo no se produce por un error de quien ha escrito el código. En estos casos, y bajo determinadas circunstancias, el intérprete lanza un error, detectado en tiempo de ejecución, ya que el mismo, como se ha dicho, depende de las circunstancias particulares en las que el código se está ejecutando. Esas circunstancias son diversas, pero algunos ejemplos frecuentes pueden ser:
- Una función que falla porque recibe unos parámetros no esperados;
- Una operación de cómputo falla porque el valor obtenido en tiempo de ejecución no es del tipo esperado;
- Una conexión no puede realizarse por factores externos, entre muchos otros ejemplos.
A este tipo de errores detectados en tiempo de ejecución, se los denomina excepciones, y pueden capturarse y manejarse a conveniencia, desde el propio código fuente.
El manejo de excepciones en Python, se puede llevar a cabo mediante
la estructura try / except
, y la declaración
raise
. Estas declaraciones se explican a continuación.
Uso básico de la estructura try / except
La estructura try / except
permite capturar
excepciones que de otro modo provocarían la finalización abrupta del
script, cuando una excepción sea lanzada.
Cuando una instrucción tiene la posibilidad de fallar (normalmente,
cuando depende de valores obtenidos al vuelo), puede colocarse el código
dentro de la estructura try
, y utilizarse
except
para ejecutar una acción en caso de que el intento
de ejecución de código del try
, falle. Su sintaxis podría
interpretarse como la siguiente:
intentar: ejecutar esto si falla: hacer esto otro
Pasado a lenguaje Python:
try: # instrucción que puede fallar except: # instrucción a ejecutar en caso de que el try falle
También es posible capturar el tipo de excepción lanzada:
try: # instrucción que puede fallar except TipoDeExcepción1: # instrucción a ejecutar en caso de que se produzca # una excepción de tipo TipoDeExcepcion1 except TipoDeExcepción2: # instrucción a ejecutar en caso de que se produzca # una excepción de tipo TipoDeExcepcion2
También es admisible capturar más de un tipo de excepción de forma simultánea:
try: # instrucción que puede fallar except (TipoDeExcepción1, TipoDeExcepción2): # instrucción a ejecutar en caso de que se produzca # una excepción de tipo TipoDeExcep...
E incluso, puedo capturarse una descripción del error, aunque no se conozca el tipo de excepción: