Considérese la siguiente aplicación sencilla: una forma de ventanas creado por una secuencia "nueva aplicación de Windows en C#" en VS que fue modificada en un siguiente manera:La captura de excepción en el principal método()
public static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
try
{
Application.Run(new Form1());
}
catch (Exception ex)
{
MessageBox.Show("An unexpected exception was caught.");
}
}
Form1.cs contiene las siguientes modificaciones:
private void Form1_Load(object sender, EventArgs e)
{
throw new Exception("Error");
}
Si presiono F5 en el IDE, y luego, como espero, veo un cuadro de mensaje que indica que la excepción fue capturado y la aplicación se cierra.
Si voy a depurar (o liberar)/bin y ejecutar el ejecutable, veo la ventana estándar de "excepción no controlada", lo que significa que mi controlador de excepción no funciona.
Obviamente, eso tiene algo que ver con la excepción lanzada desde un hilo diferente desde el que se llama a Application.Run. Pero la pregunta sigue siendo: ¿por qué el comportamiento difiere dependiendo de si la aplicación se ha ejecutado desde IDE o desde la línea de comandos? ¿Cuál es la mejor práctica para asegurarse de que no quedan excepciones en la aplicación?
@ Corvin: verifique una respuesta aceptada, si cree que ha encontrado una solución a su pregunta. –