3.3 Control de excepciones (try, except): Cómo capturar y manejar errores que pueden ocurrir durante la ejecución del programa

Control de excepciones en Python

El control de excepciones es un mecanismo que permite capturar y manejar errores que pueden ocurrir durante la ejecución de un programa. En Python, esto se logra mediante el uso de las palabras clave try y except.

Sintaxis básica

La sintaxis básica de un bloque try-except es la siguiente:

try:
    # Código que podría generar una excepción
except:
    # Código que se ejecuta cuando se produce una excepción

En este ejemplo, todo el código dentro del bloque try se ejecutará normalmente. Sin embargo, si se genera una excepción durante la ejecución de este código, se ejecutará el bloque except en lugar de abortar el programa.

La cláusula except puede tomar varios parámetros opcionales que permiten personalizar el manejo de la excepción:

  • except: captura cualquier tipo de excepción
  • except TipoDeExcepción: captura una excepción específica de tipo TipoDeExcepción
  • except (TipoExcepción1, TipoExcepción2): captura cualquiera de los tipos de excepción en la tupla
  • except TipoExcepción as variable: captura la excepción y la almacena en la variable especificada
  • except: captura cualquier excepción que no haya sido capturada por ninguna otra cláusula except previa

Ejemplos de control de excepciones

A continuación, se presentan algunos ejemplos para ilustrar cómo se utiliza el control de excepciones en Python.

Excepción ZeroDivisionError

La siguiente función divide dos números y devuelve el resultado:

def dividir(numero1, numero2):
    return numero1 / numero2

Si el segundo número es cero, se generará una excepción ZeroDivisionError al intentar realizar la división. Para evitar que la función aborte el programa, se puede utilizar el bloque try-except para capturar y manejar la excepción:

def dividir(numero1, numero2):
    try:
        return numero1 / numero2
    except ZeroDivisionError:
        print('Error: no se puede dividir entre cero')

En este ejemplo, el bloque try puede generar una excepción ZeroDivisionError si se intenta dividir entre cero. Si esto ocurre, se ejecutará el bloque except y se imprimirá un mensaje de error en la pantalla en lugar de abortar el programa.

Excepción FileNotFoundError

La siguiente función lee el contenido de un archivo especificado por su ruta:

def leer_archivo(ruta):
    archivo = open(ruta, 'r')
    contenido = archivo.read()
    archivo.close()
    return contenido

Si el archivo especificado no existe, se generará una excepción FileNotFoundError al intentar abrirlo. Se puede utilizar el bloque try-except para capturar y manejar la excepción:

def leer_archivo(ruta):
    try:
        archivo = open(ruta, 'r')
        contenido = archivo.read()
        archivo.close()
        return contenido
    except FileNotFoundError:
        print('Error: el archivo especificado no existe')

En este ejemplo, el bloque try intentará abrir el archivo especificado y leer su contenido. Sin embargo, si el archivo no existe, se generará una excepción FileNotFoundError. Para evitar que la función aborte el programa, se utiliza el bloque except para capturar y manejar la excepción.

Excepción personalizada

En algunos casos, puede ser útil definir excepciones personalizadas para manejar situaciones específicas. Para hacer esto, se puede crear una nueva clase que herede de la clase Exception:

class MiError(Exception):
    pass

def funcion_con_error():
    raise MiError('Este es un mensaje de error personalizado')

try:
    funcion_con_error()
except MiError as e:
    print('Se produjo un error:', e)

En este ejemplo, se define una nueva clase de excepción llamada MiError. La función funcion_con_error() genera deliberadamente una excepción de este tipo utilizando la palabra clave raise. El bloque try-except captura la excepción MiError y muestra un mensaje personalizado en la pantalla.

Conclusión

El control de excepciones es una herramienta poderosa que permite manejar errores de manera elegante y prevenir que el programa se detenga abruptamente. A través del uso de los bloques try-except, es posible capturar y manejar excepciones de manera personalizada para cada situación. Como desarrolladores Python, es importante dominar este concepto y utilizarlo de manera efectiva en nuestros programas.

AnteriorSiguiente

[mwai_chat]

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *