Está en la página 1de 4

MANEJO DE EXCEPCIONES EN C#

NOMBRE: Hussein Rahman


CICLO: 6to A Sistemas
Las excepciones en C# ofrecen un modo estructurado, uniforme y con seguridad de
tipos para el manejo de situaciones de error tanto a nivel de sistema como a nivel de
aplicacin.
La clase System.Exception.
La clase System.Exception es el tipo base de todas las excepciones. Entre sus
propiedades ms importantes estn:
Message: es una propiedad de slo lectura que contiene una descripcin de la
causa de la excepcin (en forma de cadena legible por el ser humano).
InnerException: es una propiedad de slo lectura que contiene la excepcin
interna de la excepcin. Si su valor es distinto de null, indica que la excepcin
actual ha sido lanzada en respuesta a otra excepcin (que es a la que se llama la
excepcin interna).

El valor de estas propiedades puede ser especificado en el constructor de la clase


System.Exception.
Lanzamiento de Excepciones.
Las excepciones pueden ser lanzadas de dos modos:
Mediante la sentencia throw: Lanza la excepcin de modo inmediato e
incondicional. En ningn caso vuelve el control a la sentencia siguiente al
throw.
Durante la ejecucin de sentencias y expresiones C# se pueden dar situaciones
en las que la operacin no pueda completarse de modo normal y se lance una
excepcin. Por ejemplo, una divisin entera por cero lanza la excepcin
System.DivideByZeroException.
Manejo de Excepciones.

Las excepciones se manejan mediante una sentencia try-catch-finally.

Por ejemplo:
try
{
string s = null;
x.MiFun(s);
}

catch (ArgumentNullException e)
{
Console.WriteLine("{0} Primera excepcin capturada", e);
}

catch (Exception e)
{
Console.WriteLine("{0} Segunda excepcin capturada", e);
}
Cuando se lanza una excepcin desde el cdigo que est entre las llaves de la clusula
try, el sistema busca la primera clusula catch que pueda manejar el tipo de excepcin
que se ha lanzado (el tipo de excepcin ha de coincidir con el del parmetro que espera
la clusula catch o bien ser de un tipo derivado al que espera la clusula catch).

Si no se encuentra la clusula catch adecuada se sigue buscando la excepcin en el


punto del cdigo desde el que se ha llamado al mtodo que contiene la clusula try
donde se ha lanzado la excepcin. Esta operacin se repite hasta encontrar una clusula
catch que maneje (tambin se dice capture) la excepcin.

Es importante tener en cuenta que si se desea que una clusula catch capture cualquier
excepcin ha de definirse sin parmetros.

Una vez se ha encontrado la clusula catch que maneja la excepcin, se transfiere el


control a la primera sentencia de tal clusula. Antes de ejecutar la primera sentencia de
la clusula catch, se ejecutan todas las clusulas finally de las sentencias try
anidadas a la que captura la excepcin.

Si no se encuentra una clusula catch puede ocurrir una de las dos opciones siguientes:
Si la bsqueda llega a un constructor static o a un inicializador de campos
static, se lanza una excepcin System.TypeInicializationException en el
punto en el que se invoc al constructor. El campo InnerException de la
excepcin TypeInicializationException contiene la excepcin
originalmente lanzada.
Si la bsqueda llega al cdigo que inicialmente comenz el thread o el proceso,
la ejecucin del thread o el proceso finaliza.
Clases de Excepcin ms comunes.

También podría gustarte