Controlar y generar excepciones en .NET

Las aplicaciones tienen que ser capaces de controlar de forma coherente los errores que se producen durante la ejecución. .NET proporciona un modelo para notificar errores a las aplicaciones de manera uniforme: las operaciones .NET indican errores iniciando 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 todas. Aunque es posible recuperarse de la mayoría de las excepciones que se producen en la aplicación, no ocurre lo mismo con las excepciones de runtime.

En .NET, una excepción es un objeto que hereda de la clase System.Exception. Una excepción se inicia desde un área del código en la que ha producido un problema. La excepción se pasa hacia arriba en la pila hasta que la aplicación la controla o el programa finaliza.

Excepciones vs. métodos tradicionales de control de errores

Tradicionalmente, el modelo de control de errores de un lenguaje se basaba en el modo exclusivo del lenguaje de detectar los errores y buscarles controladores, o bien en el mecanismo de control de errores ofrecido por el sistema operativo. La forma en que .NET implementa el control de excepciones proporciona las siguientes ventajas:

  • La administración e iniciación de excepciones funciona de igual modo para los lenguajes de programación. NET.

  • No requiere ninguna sintaxis de lenguaje específica para controlar las excepciones, pero permite que cada lenguaje defina su propia sintaxis.

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

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

Las excepciones ofrecen ventajas sobre otros métodos de notificación de errores, por ejemplo, los 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 por el sistema como resultado de que el código no pueda encontrar un código de retorno de error.

Excepciones comunes

En la tabla siguiente se muestra algunas excepciones comunes con ejemplos de las causas que las originan.

Tipo de excepción Descripción Ejemplo
Exception Clase base de todas las excepciones. Ninguno (utilice una clase derivada de esta excepción).
IndexOutOfRangeException El tiempo de ejecución la genera solo cuando una matriz no está correctamente indexada. La indexación de una matriz fuera de su intervalo válido:
arr[arr.Length+1]
NullReferenceException El tiempo de ejecución la genera solo 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 de todas las excepciones de argumento. Ninguno (utilice una clase derivada de esta excepción).
ArgumentNullException Los métodos que no permiten que un argumento sea null la generan. String s = null;
"Calculate".IndexOf(s);
ArgumentOutOfRangeException Los métodos que comprueban que los argumentos se encuentran en un intervalo determinado la generan. String s = "string";
s.Substring(s.Length+1);

Vea también