Compartir a través de


Manejo y lanzamiento de excepciones en .NET

Las aplicaciones deben poder controlar los errores que se producen durante la ejecución de forma coherente. .NET proporciona un modelo para notificar a las aplicaciones de errores de forma uniforme: las operaciones de .NET indican un error al producir excepciones.

Excepciones

Una excepción es cualquier condición de error o comportamiento inesperado que encuentra un programa en ejecución. Las excepciones pueden iniciarse debido a un error en el código propio o en el código al que se llama (por ejemplo, una biblioteca compartida), a recursos del sistema operativo no disponibles, a condiciones inesperadas que encuentra el runtime (por ejemplo, imposibilidad de comprobar el código), etc. La aplicación puede recuperarse de algunas de estas condiciones, pero no de otras. Aunque puede recuperarse de la mayoría de las excepciones de aplicación, no puede recuperarse de la mayoría de las excepciones en tiempo de ejecución.

En .NET, una excepción es un objeto que hereda de la System.Exception clase . Se lanza una excepción desde una sección de código donde ha ocurrido un problema. La excepción se pasa hacia arriba en la pila hasta que la aplicación la controla o el programa finaliza.

Excepciones frente a métodos tradicionales de control de errores

Tradicionalmente, el modelo de control de errores de un lenguaje se basaba en la forma única del lenguaje de detectar errores y localizar controladores para ellos, o en el mecanismo de control de errores proporcionado por el sistema operativo. La forma en que .NET implementa el control de excepciones proporciona las siguientes ventajas:

  • El lanzamiento y manejo de excepciones funciona de la misma manera para los lenguajes de programación de .NET.

  • No requiere ninguna sintaxis de lenguaje determinada para controlar excepciones, pero permite que cada lenguaje defina su propia sintaxis.

  • Las excepciones pueden iniciarse en varios procesos en incluso límites de máquina.

  • El código de control de excepciones se puede agregar a una aplicación para aumentar la confiabilidad del programa.

Las excepciones ofrecen ventajas sobre otros métodos de notificación de errores, como códigos de retorno. Lo errores no pasan desapercibidos porque si se inicia una excepción y no la controla, el runtime finaliza la aplicación. Los valores no válidos no continúan propagándose a través del sistema debido a que el código no comprueba correctamente si hay un código de retorno de fallo.

Excepciones comunes

En la tabla siguiente se enumeran algunas excepciones comunes con ejemplos de lo que puede causarlas.

Tipo de excepción Descripción Ejemplo
Exception Clase base de todas las excepciones. None (use una clase derivada de esta excepción).
IndexOutOfRangeException El tiempo de ejecución la genera solo cuando una matriz no está correctamente indexada. Indexación de una matriz fuera de su intervalo válido:
arr[arr.Length+1]
NullReferenceException Solo se produce en tiempo de ejecución cuando se hace referencia a un objeto NULL. object o = null;
o.ToString();
InvalidOperationException Los métodos la generan si se produce un estado no válido. Llamada a Enumerator.MoveNext() después de quitar un elemento de la colección subyacente.
ArgumentException Clase base para todas las excepciones de argumento. None (use una clase derivada de esta excepción).
ArgumentNullException Se lanza mediante métodos que no permiten que un argumento sea nulo. String s = null;
"Calculate".IndexOf(s);
ArgumentOutOfRangeException Lanzado por métodos que verifican que los argumentos están en un rango dado. String s = "string";
s.Substring(s.Length+1);

Consulte también