Jerarquía de excepciones
Hay dos tipos de excepciones: las generadas por un programa en ejecución y las generadas por Common Language Runtime. Además, hay una jerarquía de excepciones que una aplicación o el motor tiempo de ejecución pueden producir.
Exception es la clase base de las excepciones. Varias clases de excepciones derivan directamente de Exception, entre ellas ApplicationException y SystemException. Estas dos clases forman la base de casi todas las excepciones del motor en tiempo de ejecución.
La mayoría de las excepciones que derivan directamente de Exception no agregan funcionalidad a la clase Exception. Por ejemplo, la jerarquía de la clase InvalidCastException es:
Object Excepción SystemException InvalidCastException
El motor en tiempo de ejecución produce la clase derivada adecuada de SystemException cuando se producen errores. Estos errores se producen debido a comprobaciones del motor en tiempo de ejecución incorrectas, como errores de matriz fuera de límite, y pueden aparecer durante la ejecución de cualquier método. Si va a diseñar una aplicación que crea excepciones nuevas, derive esas excepciones de la clase Exception. No es recomendable detectar una SystemException, ni tampoco es una costumbre de programación correcta el hecho de producir una SystemException en la aplicación.
Entre las excepciones más graves, que son las que produce el motor en tiempo de ejecución o se producen en condiciones irrecuperables, están ExecutionEngineException, StackOverflowException y OutOfMemoryException.
Las excepciones de interoperación derivan de SystemException y ExternalException las extiende más. Por ejemplo, COMException es la excepción que se produce durante las operaciones de interoperabilidad COM y se deriva de ExternalException. Win32Exception y SEHException también se derivan de ExternalException.
Jerarquía de excepciones del motor en tiempo de ejecución
El motor en tiempo de ejecución tiene un conjunto base de excepciones que derivan de SystemException, que produce cuando está ejecutando instrucciones individuales. En la tabla siguiente se muestran jerárquicamente las excepciones estándar que proporciona el motor en tiempo de ejecución y las condiciones en que se debe crear una clase derivada.
Tipo de excepción |
Tipo base |
Descripción |
Ejemplo |
---|---|---|---|
Objeto |
Clase base de todas las excepciones. |
Ninguno (utilice una clase derivada de esta excepción). |
|
Excepción |
Clase base de todos los errores que genera el motor en tiempo de ejecución. |
Ninguno (utilice una clase derivada de esta excepción). |
|
SystemException |
La produce el motor en tiempo de ejecución sólo cuando no se indiza correctamente una matriz. |
Indización de una matriz fuera de su intervalo válido: arr[arr.Length+1] |
|
SystemException |
La produce el motor en tiempo de ejecución sólo cuando se hace referencia a un objeto nulo. |
object o = null; o.ToString(); |
|
La produce el motor en tiempo de ejecución cuando se obtiene acceso a una memoria no válida. |
Aparece al interoperar con código no administrado o con código administrado no seguro, y cuando se utiliza un puntero no válido. |
||
SystemException |
La producen los métodos que se encuentran en un estado no válido. |
Llamar a Enumerator.GetNext() después de quitar un Item de la colección subyacente. |
|
SystemException |
Clase base de todas las excepciones de argumento. |
Ninguno (utilice una clase derivada de esta excepción). |
|
ArgumentException |
La producen los métodos que no permiten que un argumento sea nulo. |
String s = null; "Calculate".IndexOf (s); |
|
ArgumentException |
La producen los métodos que comprueban que los argumentos están en un intervalo dado. |
String s = "string"; s.Chars[9]; |
|
SystemException |
Clase base de las excepciones que se producen a o van dirigidas a entornos fuera del motor en tiempo de ejecución. |
Ninguno (utilice una clase derivada de esta excepción). |
|
ExternalException |
Excepción que encapsula información de HRESULT de COM. |
Se usa en la interoperabilidad COM. |
|
ExternalException |
Excepción que encapsula información de control de excepciones estructurada de Win32. |
Se usa en la interoperabilidad de código no administrado. |
Vea también
Conceptos
Procedimientos recomendados para controlar excepciones
Controlar y generar excepciones