Sobes.tech
Intern

¿Qué son las excepciones en el lenguaje de programación C#?

sobes.tech AI

Respuesta de la IA

Las excepciones en C# son situaciones anómalas o errores que ocurren durante la ejecución del programa y que interrumpen su flujo normal.

Permiten separar el código de manejo de errores del código principal de lógica de la aplicación y proporcionan un enfoque más estructurado para gestionar errores.

Aspectos principales de las excepciones en C#:

  1. Tipos de excepciones: C# tiene una jerarquía de clases de excepciones estándar que heredan de la clase base System.Exception. Por ejemplo, System.NullReferenceException, System.DivideByZeroException, System.IO.FileNotFoundException. También se pueden crear clases de excepciones personalizadas.
  2. Generación de excepciones (throw): La excepción se genera usando la palabra clave throw.
  3. Captura de excepciones (try-catch): El bloque try contiene el código que puede generar una excepción. El bloque catch captura un tipo específico de excepción y ejecuta el código para manejarla.
  4. Bloque final (finally): El bloque finally se ejecuta siempre, independientemente de si se generó una excepción o no. Se usa a menudo para liberar recursos.
  5. Operador using: Forma más conveniente de gestionar recursos, que garantiza la llamada al método Dispose. Es similar a la construcción try-finally para objetos que implementan la interfaz IDisposable.
  6. Filtros de excepciones: Permiten agregar una condición al bloque catch para un manejo más específico de las excepciones.

Ejemplo de uso:

public class Example
{
    public void ProcessData(int denominator)
    {
        try
        {
            int result = 10 / denominator; // Puede generar DivideByZeroException
            Console.WriteLine($"Resultado: {result}");
        }
        catch (DivideByZeroException ex) // Capturamos una excepción específica
        {
            Console.WriteLine("Error: No se puede dividir por cero.");
            // Registro de la excepción, si es necesario
            // Console.WriteLine($"Detalles de la excepción: {ex.Message}");
        }
        catch (Exception ex) // Capturamos cualquier otra excepción
        {
            Console.WriteLine($"Ocurrió un error inesperado: {ex.Message}");
        }
        finally // Este bloque siempre se ejecutará
        {
            Console.WriteLine("Procesamiento finalizado.");
        }
    }

    public void UsingExample()
    {
        // Ejemplo de uso de using para llamar automáticamente a Dispose
        using (StreamReader reader = new StreamReader("file.txt"))
        {
            string line = reader.ReadLine();
            Console.WriteLine(line);
        } // Aquí se llama automáticamente a reader.Dispose(), incluso si ocurre una excepción
    }

    public void ThrowExample(int value)
    {
        if (value < 0)
        {
            throw new ArgumentOutOfRangeException(nameof(value), "El valor debe ser no negativo."); // Generación de una excepción propia
        }
        // ... lógica adicional
    }
}

El uso de excepciones ayuda a crear aplicaciones más robustas, legibles y mantenibles, separando el manejo de errores de la lógica principal.