CodeGym /Curso de Java /Python SELF ES /Errores durante la ejecución del programa

Errores durante la ejecución del programa

Python SELF ES
Nivel 17 , Lección 0
Disponible

1.1 Aparición de un error

Los errores (y excepciones) son parte integral de la programación. Surgen cuando el programa se enfrenta a situaciones imprevistas que no puede manejar. En Python, existe un sistema de manejo de excepciones que permite interceptar y manejar errores, evitando que el programa termine abruptamente.

Las excepciones surgen con más frecuencia en las siguientes situaciones:

Errores de sintaxis:

Estos errores se detectan en la etapa de compilación del código y están relacionados con la gramática incorrecta del lenguaje Python. Por ejemplo, dos puntos faltantes o palabras clave incorrectas.


if True:
    print("Hello")
        

Errores en tiempo de ejecución (Runtime Errors):

Estos errores ocurren durante la ejecución del programa y pueden ser causados por diversas razones, como división por cero, acceso a un índice de lista inexistente, uso incorrecto de tipos de datos, etc.


print(1 / 0)  # ZeroDivisionError
        

Errores lógicos:

Estos errores ocurren cuando el programa se ejecuta sin fallos, pero produce un resultado incorrecto debido a un error en la lógica del programa. Los errores lógicos no lanzan excepciones y son más difíciles de depurar.

Los errores lógicos suelen llamarse bugs — es como una cierta imperfección en la funcionalidad del programa. Los errores en tiempo de ejecución se llaman excepciones. Para cada error de este tipo, Python crea un objeto especial (excepción) y lo "lanza" al programa...

1.2 Ruta de las excepciones

Cuando en Python surge una excepción, se eleva a través de la pila de llamadas hasta que se maneja. La pila de llamadas representa la secuencia de llamadas de funciones que llevaron a la aparición de la excepción.

Mecanismo de elevación de excepciones

  • Ocurrencia de una excepción: Cuando sucede un error, Python crea un objeto de excepción.
  • Búsqueda de manejador de excepción: El intérprete de Python comienza la búsqueda de un manejador de excepción en el bloque de código actual. Si no encuentra uno, pasa al siguiente bloque de código que llamó a la función actual.
  • Elevación de la excepción a través de la pila: Este proceso se repite hasta que se encuentra un manejador o se agota la pila de llamadas.
  • Terminación del programa: Si no se encuentra un manejador, el programa termina su ejecución y muestra un mensaje de error.

Ejemplo:


def func_a():
    func_b()
        
def func_b():
    func_c()
        
def func_c():
    print(1 / 0)  # Aquí ocurre la excepción ZeroDivisionError
        
func_a()
        

En este ejemplo, la excepción ZeroDivisionError surge en la función func_c, luego se eleva a través de la pila de llamadas a través de func_b y func_a. Si no se encuentra un manejador en ninguna parte, el programa terminará con un error.

1.3 Lectura del log

Cuando el programa termina debido a una excepción no manejada, Python muestra un trazado de pila (traceback), que ayuda a los desarrolladores a entender qué salió mal. El trazado de pila contiene información sobre la secuencia de llamadas de funciones que llevaron a la aparición de la excepción, y puede ser analizado para depurar el programa.

Ejemplo de trazado de pila


Traceback (most recent call last):
    File "example.py", line 10, in 
        func_a()
File "example.py", line 2, in func_a
    func_b()
File "example.py", line 5, in func_b
    func_c()
File "example.py", line 8, in func_c
    print(1 / 0)
ZeroDivisionError: division by zero

Análisis del trazado de pila

  • Tipo de excepción y mensaje: Al final del trazado se indica el tipo de excepción y el mensaje. En el ejemplo proporcionado es ZeroDivisionError: division by zero.
  • Secuencia de llamadas: El trazado de pila muestra la secuencia de llamadas de funciones. En nuestro ejemplo, el error ocurrió en la línea print(1 / 0) en la función func_c, que fue llamada desde func_b, que a su vez fue llamada desde func_a.
  • Archivos y líneas de código: En cada línea del trazado se indica el archivo y el número de línea donde se produjo la llamada. Esto ayuda a encontrar y corregir rápidamente el error en el código.

Uso práctico del trazado de pila

El trazado de pila es una herramienta importante para la depuración y análisis de programas. Ayuda a los desarrolladores a entender la causa del error y a encontrar el lugar en el código donde ocurrió. Aquí hay algunos consejos sobre cómo usar el trazado de pila:

  1. Leer de abajo hacia arriba: Comienza el análisis desde la llamada más baja en el trazado, ya que es donde ocurrió la excepción.
  2. Revisar todas las llamadas: Examina todas las llamadas en el trazado para entender la ruta por la que se propagó la excepción.
  3. Corregir el código: Usa la información del trazado para corregir el código y prevenir errores similares en el futuro.

Aprenderás más sobre excepciones en las próximas lecciones.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION