Las excepciones son eventos inesperados que interrumpen normal la ejecución de un programa, en pocas palabras. Por ejemplo si nuestro programa está tratando de leer un archivo de texto desde un disco removible y el usuario remueve el disco, el runtime deberá mostrar una excepción. Para las excepciones tenemos las palabras reservadas try, catch y finally.

Veamos el siguiente ejemplo:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

namespace Como_mostrar_y_colocar_Excepciones

{

class Program

{

static void Main(string[] args)

{

try

{

StreamReader sr = new StreamReader(@”c:\boot.ini”);

Console.WriteLine(sr.ReadToEnd());

}

catch (Exception ex)

{

Console.WriteLine(ex.Message);

}

Console.ReadLine();

}

}

}

El mensaje que manda es que no puede encontrar en archivo en la ruta especificada. Cuando no en el try no puede realizar las instrucciones sea porque el archivo no se encontró, o no se tienen los suficientes privilegios para leer el archivo y hubo un error durante la lectura, en vez de fallar nuestra aplicación salta al bloque catch y envía un mensaje.

Múltiples Excepciones.

Continuando con el ejemplo anterior, ahora aplicaremos múltiples excepciones en el catch. Las excepciones deben ser ordenas de lo mas especifico a lo menos especifico. Ejemplo:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

namespace Como_mostrar_y_colocar_Excepciones

{

class Program

{

static void Main(string[] args)

{

try

{

StreamReader sr = new StreamReader(@”c:\boot.ini”);

Console.WriteLine(sr.ReadToEnd());

}

catch (FileNotFoundException ex)

{

Console.WriteLine(ex.Message);

}

catch (UnauthorizedAccessException ex)

{

Console.WriteLine(ex.Message);

}

catch (Exception ex)

{

Console.WriteLine(ex.Message);

}

Console.ReadLine();

}

}

}

Ahora utilizaremos un finally que después de recorrer el block del try y algunos block del catch tenemos finalizada nuestra ejecución. Agregamos al finaldel catch lo siguiente

finally

{

Console.WriteLine(“Programa finalizado”);

}