Cómo capturar errores en Python: Guía completa de try, except, finally

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Manejo de errores en Python con try, except, finally

Trabajar con errores es una parte esencial del desarrollo de software de calidad y confiable. Incluso los desarrolladores más experimentados no están exentos de que surjan errores durante la ejecución de un programa. Para evitar que estas situaciones provoquen el colapso total de la aplicación, Python ofrece potentes herramientas para el manejo de excepciones.

En esta guía, exploramos el uso correcto de las estructuras try, except y finally para crear código resistente a errores.

Fundamentos del manejo de excepciones en Python

¿Qué es el manejo de errores?

El manejo de errores en Python permite interceptar excepciones que ocurren durante la ejecución del programa. En lugar de que la aplicación termine abruptamente, el sistema ejecuta acciones específicas para gestionar correctamente la situación problemática.

Elementos clave del sistema de manejo de excepciones

El sistema de manejo de errores en Python se basa en tres bloques principales:

  • try — bloque de código donde puede ocurrir una excepción
  • except — bloque para manejar un tipo específico de error
  • finally — bloque de código que se ejecuta independientemente del resultado

Estructura básica de la construcción try-except-finally

Sintaxis de la construcción principal

try:
    # Código que puede lanzar una excepción
    pass
except SpecificError:
    # Código para manejar un error específico
    pass
finally:
    # Código que se ejecuta en cualquier caso
    pass

Aplicación práctica de la estructura básica

try:
    user_input = input("Ingresa un número: ")
    number = int(user_input)
    print(f"Ingresaste el número: {number}")
except ValueError:
    print("Error: debes ingresar un número válido")
finally:
    print("Operación finalizada")

Si la entrada es correcta, el programa mostrará el número ingresado. En caso de entrada incorrecta, se mostrará un mensaje de error. El bloque finally se ejecutará en cualquier escenario.

Manejo de diferentes tipos de excepciones

Manejo múltiple de errores

Python permite manejar diferentes tipos de excepciones usando varios bloques except:

try:
    dividend = 10
    divisor = 0
    result = dividend / divisor
except ZeroDivisionError:
    print("La división entre cero no está permitida")
except ValueError:
    print("Se detectó un formato de datos incorrecto")
except TypeError:
    print("Tipos de datos incompatibles para la operación")
finally:
    print("Procesamiento de la operación matemática finalizado")

Manejo de errores sin bloque finally

El bloque finally no es obligatorio. Si está ausente, el programa maneja la excepción y continúa su ejecución:

try:
    data_list = [1, 2, 3, 4, 5]
    element = data_list[10]  # Intento de acceder a un índice inexistente
except IndexError:
    print("Intento de acceder a un índice fuera del rango de la lista")

Obtener información detallada sobre las excepciones

Uso de la palabra clave as

Para obtener información detallada sobre una excepción, se usa la construcción con la palabra clave as:

try:
    calculation = 15 / 0
except ZeroDivisionError as error:
    print(f"Se detectó un error: {error}")
    print(f"Tipo de error: {type(error).__name__}")

Resultado de la ejecución:

Se detectó un error: division by zero
Tipo de error: ZeroDivisionError

Manejo universal de todas las excepciones

En algunos casos, es necesario interceptar cualquier posible excepción:

try:
    potentially_risky_operation()
except Exception as error:
    print(f"Ocurrió un error: {error}")

Blogs

Book Recommendations