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#:
- 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. - Generación de excepciones (throw): La excepción se genera usando la palabra clave
throw. - Captura de excepciones (try-catch): El bloque
trycontiene el código que puede generar una excepción. El bloquecatchcaptura un tipo específico de excepción y ejecuta el código para manejarla. - Bloque final (finally): El bloque
finallyse ejecuta siempre, independientemente de si se generó una excepción o no. Se usa a menudo para liberar recursos. - Operador using: Forma más conveniente de gestionar recursos, que garantiza la llamada al método
Dispose. Es similar a la construccióntry-finallypara objetos que implementan la interfazIDisposable. - Filtros de excepciones: Permiten agregar una condición al bloque
catchpara 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.