manejo - tipos de excepciones en c#
¿Cómo funcionan las excepciones(entre bastidores) en C#? (3)
Idéntico a " Cómo funcionan las excepciones (entre bastidores) en C ++ ", pero para C # .
Sé que los siguientes pasos deben realizarse cuando se lanza una excepción.
- Encuentra el controlador más cercano para el tipo de excepción;
- Desenrolle la pila hasta el nivel de controlador;
- Llama al manejador;
- Encuentra y llama a cada bloque
finally
.
¿Cómo maneja .NET estas operaciones? ¿Cómo funciona el mapeo de los controladores "actuales"? ¿Cuánto código se emite en un bloque try / catch? ¿Y en un bloque de tiro?
Las excepciones de .NET en Windows utilizan el mecanismo subyacente de Manejo de Excepciones Estructuradas (SEH) del sistema operativo, de la misma manera que el código nativo. Como se enumera en la pregunta vinculada para C (y C ++) .
Las excepciones de .NET utilizan la implementación subyacente del manejo de excepciones estructuradas de Windows, aunque esto no es un requisito. Mono puede hacerlo de manera diferente.
De hecho, si escribe una aplicación de consola de una sola línea que simplemente lanza una excepción y luego la ejecuta en Windbg, verá el gancho en el manejo de excepciones no administradas.
Lea el artículo de Christopher Brumme; proporciona una explicación muy detallada de lo que sucede detrás de escena en el manejo de excepciones de CLR:
http://blogs.msdn.com/b/cbrumme/archive/2003/10/01/51524.aspx