Saltar al contenido

Estructuras de control de errores en programación.

En la programación, los errores son inevitables y pueden ocurrir por diversas razones, desde errores de sintaxis hasta problemas inesperados durante la ejecución del programa, por eso es importante conocer y saber manejar las estructuras de control de errores en programación. Para manejar estos errores, los lenguajes de programación incluyen estructuras de control de errores, como las siguientes:

  • Bloques de control de excepciones try-catch-finally.
  • Estructura throw, que permite lanzar una excepción personalizada.

Estas estructuras de control de errores en programación, permiten detectar, manejar y prevenir fallos en tiempo de ejecución.

Existen dos tipos principales de errores en programación:

  • Errores en tiempo de compilación: Ocurren antes de que el programa se ejecute, normalmente debido a errores de sintaxis o de tipos de datos.
  • Errores en tiempo de ejecución: Se producen mientras el programa se está ejecutando, generalmente por condiciones inesperadas como dividir por cero o intentar acceder a un archivo inexistente.
Índice de contenidos

    Errores en tiempo de compilación.

    Los errores en tiempo de compilación son detectados por el compilador antes de ejecutar el programa. Suelen deberse a:

    Ejemplo de error en tiempo de compilación.

    C#.

    int x = "Hola"; // Error: no se puede asignar una cadena a un entero
    

    Java.

    int x = "Hola"; // Error de tipos: no se puede asignar String a int
    

    Python.

    x: int = "Hola"  # Error en lenguajes con tipado estático, aunque Python lo permite sin restricciones.
    

    Visual Basic.

    Dim x As Integer = "Hola" ' Error de tipos: no se puede asignar una cadena a un entero
    

    Errores en tiempo de ejecución.

    Los errores en tiempo de ejecución ocurren cuando el programa se ejecuta y enfrenta una situación inesperada. Algunos ejemplos incluyen:

    • División por cero.
    • Acceso a índices fuera de los límites de una lista o arreglo.
    • Intento de abrir un archivo inexistente.

    Ejemplo de error en tiempo de ejecución.

    C#.

    int x = 10;
    int y = 0;
    Console.WriteLine(x / y); // Error: División por cero en tiempo de ejecución
    

    Java.

    int x = 10;
    int y = 0;
    System.out.println(x / y); // Error: ArithmeticException (división por cero)
    

    Python.

    x = 10
    y = 0
    print(x / y)  # Error: ZeroDivisionError
    

    Visual Basic.

    Dim x As Integer = 10
    Dim y As Integer = 0
    Console.WriteLine(x / y) ' Error en tiempo de ejecución: división por cero
    

    Manejo de las estructuras de control de errores en programación. Estructuras de control de excepciones.

    Para evitar que los errores en tiempo de ejecución provoquen la terminación del programa, los lenguajes de programación ofrecen mecanismos de control de errores. Las estructuras más comunes incluyen:

    Bloque Try-Catch.

    El bloque try-catch permite manejar excepciones capturando los errores y ejecutando un código alternativo en caso de fallo.

    C#.

    try
    {
        int x = 10;
        int y = 0;
        Console.WriteLine(x / y); // Esto generará una excepción
    }
    catch (DivideByZeroException ex)
    {
        Console.WriteLine("Error: No se puede dividir por cero.");
    }
    

    Java.

    try {
        int x = 10;
        int y = 0;
        System.out.println(x / y); // Esto generará una excepción
    } catch (ArithmeticException ex) {
        System.out.println("Error: No se puede dividir por cero.");
    }
    

    Python.

    try:
        x = 10
        y = 0
        print(x / y)  # Esto generará una excepción
    except ZeroDivisionError:
        print("Error: No se puede dividir por cero.")
    

    Visual Basic.

    Try
        Dim x As Integer = 10
        Dim y As Integer = 0
        Console.WriteLine(x / y) ' Esto generará una excepción
    Catch ex As DivideByZeroException
        Console.WriteLine("Error: No se puede dividir por cero.")
    End Try
    

    Bloque Finally.

    El bloque finally se usa para ejecutar código que debe ejecutarse siempre, independientemente de si hubo o no una excepción.

    C#.

    try
    {
        int[] numeros = { 1, 2, 3 };
        Console.WriteLine(numeros[5]); // Error: índice fuera de rango
    }
    catch (IndexOutOfRangeException ex)
    {
        Console.WriteLine("Error: Índice fuera de rango.");
    }
    finally
    {
        Console.WriteLine("Este código siempre se ejecuta.");
    }
    

    Java.

    try {
        int[] numeros = { 1, 2, 3 };
        System.out.println(numeros[5]); // Error: Índice fuera de rango
    } catch (ArrayIndexOutOfBoundsException ex) {
        System.out.println("Error: Índice fuera de rango.");
    } finally {
        System.out.println("Este código siempre se ejecuta.");
    }
    

    Python.

    try:
        numeros = [1, 2, 3]
        print(numeros[5])  # Error: índice fuera de rango
    except IndexError:
        print("Error: Índice fuera de rango.")
    finally:
        print("Este código siempre se ejecuta.")
    

    Visual Basic.

    Try
        Dim numeros() As Integer = {1, 2, 3}
        Console.WriteLine(numeros(5)) ' Error: índice fuera de rango
    Catch ex As IndexOutOfRangeException
        Console.WriteLine("Error: Índice fuera de rango.")
    Finally
        Console.WriteLine("Este código siempre se ejecuta.")
    End Try
    

    Bloque throw.

    El bloque throw se usa para generar manualmente una excepción.

    C#.

    throw new Exception("Este es un error personalizado.");
    

    Java.

    throw new Exception("Este es un error personalizado.");
    

    Python.

    raise Exception("Este es un error personalizado.")
    

    Visual Basic.

    Throw New Exception("Este es un error personalizado.")
    

    Tipos de excepciones en programación.

    Tipo de Error Descripción Ejemplo de Lenguajes
    ArithmeticException Ocurre cuando hay un error en una operación aritmética, como la división por cero. Java, C#
    NullReferenceException / NullPointerException Se lanza cuando se intenta acceder a un objeto nulo. C# (NullReferenceException), Java (NullPointerException)
    IndexOutOfRangeException / ArrayIndexOutOfBoundsException Se lanza cuando se intenta acceder a un índice fuera del rango de un array o lista. Java (ArrayIndexOutOfBoundsException), C# (IndexOutOfRangeException), Python (IndexError)
    IOException Error de entrada/salida, por ejemplo, cuando no se puede leer o escribir un archivo. C#, Java, VB.NET
    FileNotFoundException Se lanza cuando se intenta acceder a un archivo que no existe. VB.NET, C#, Java
    KeyNotFoundException Se lanza cuando se busca una clave en un diccionario y esta no existe. C#, Python (KeyError)
    TypeError Se lanza cuando una operación o función es aplicada a un objeto de un tipo inapropiado. Python, JavaScript
    ValueError Ocurre cuando se pasa un valor incorrecto a una función o método. Python
    OverflowException Se lanza cuando una operación aritmética genera un valor fuera del rango permitido. C#
    FormatException Se lanza cuando un formato de cadena no es el esperado en una conversión. C#, VB.NET
    Exception Clase base de todas las excepciones. Se puede lanzar para representar un error genérico. Java, C#, Python, VB.NET
    Configuración