Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
- Clase de excepción y propiedades
- Procedimiento para utilizar el bloque Try/Catch para detectar excepciones
- Cómo usar excepciones específicas en un bloque de captura
- Procedimiento para iniciar excepciones explícitamente
- Cómo crear excepciones de User-Defined
- Uso de controladores de excepciones filtradas por el usuario
- Procedimiento para usar bloques Finally
- Control de excepciones de interoperabilidad COM
- Procedimientos recomendados para excepciones
- Lo que cada desarrollo necesita saber sobre las excepciones en tiempo de ejecución