domingo, 13 de julio de 2025

Programando en C# no. 8 (manejo de excepciones)

En el mundo de la programación hay que saber diferenciar entre una excepción y un error.

Una excepción es una falla en el flujo normal de un programa. Si el programa tiene manejo de excepciones, el programa continuará su ejecución o flujo aunque hayan excepciones. Un ejemplo sería que en una parte del prograam se quiera acceder a un índice inexistente de un vector.

Un error es una falla que romperá el flujo del programa. No hay forma de evitarlo. Por ejemplo, que la máquina en la que se está ejecutando un programa se quede sin memoria o que no tenga energía (eléctrica) para funcionar.

Al igual que Java, C# tiene la capacidad de manejar excepciones. Casi de manera idéntica.

Supongamos que queremos acceder a un índice de una cadena "ABC" que no existe. La forma de manejar esa excepción, de tipo ArgumentOutOfRangeException, sería la siguiente:

 try
 {
   string nuevoString = "ABC".Substring(2, 4);
   Console.WriteLine("{0}", nuevoString);
 } catch (ArgumentOutOfRangeException aoex)
  {
    Console.WriteLine("Ha ocurrido una Excepcion: {0}", aoex.Message);
  }

Al compilar no ocurrirá ningún error. La excepción se lanzará a la hora de la ejecución:

Ha ocurrido una Excepcion: Index and length must refer to a location within the string. (Parameter 'length')

Con esto el programa continuará su flujo a pesar de la excepción.

Para operaciones aritméticas haríamos algo como esto (ArithmeticException): 

var x = 1;
var y = 0;
try
{
  int divide = x / y;
}
catch (ArithmeticException ex)
{ 
  Console.WriteLine("Ha ocurrido una Excepcion: {0}", ex.Message);
}

De igual manera, no ocurrirá nada a la hora de la compilación. Ocurrirá a la hora de ejecución:

Ha ocurrido una Excepcion: Attempted to divide by zero.

Ya que se trata de una división entre cero.

Supongamos que queremos acceder a un elemento inexistente de un arreglo (o vector):

int[] arreglo = { 1, 2, 3 };
try
{
   int numero = arreglo[3];
}
catch (IndexOutOfRangeException ex)
{
  Console.WriteLine("Ha ocurrido una Excepcion: {0}", ex.Message);
}

El compilador no adivinará que queremos acceder a un índice que no existe. Sin embargo, el manejo de la excepción, de tipo IndexOutOfRangeException, se encargará de gestionar esa acción.

Ha ocurrido una Excepcion: Index was outside the bounds of the array.

Nota: Existen excepciones marcadas y no marcadas. Las marcadas son las que el compilador obliga a escribir. Las no marcadas no requieren manejo explícito, pero pueden causar la terminación del programa.

Continuaremos con esta serie de entregas sobre C#.

Enlaces:

https://codemonkeyjunior.blogspot.com/2025/07/programando-en-c-no-7-uso-de-genericos.html


No hay comentarios:

Publicar un comentario

Programando en C# no. 8 (manejo de excepciones)

En el mundo de la programación hay que saber diferenciar entre una excepción y un error. Una excepción es una falla en el flujo normal...

Etiquetas

Archivo del blog