2011-01-30 17 views

Respuesta

0

Es un comportamiento normal. Quizás desee atrapar la excepción para evitar que la aplicación se cierre.

1

Este es un comportamiento normal del CLR desde v2.0. Aquí hay una publicación de MSDN sobre esto. Para evitar que el proceso termine, puede usar algo como esto

<legacyUnhandledExceptionPolicy enabled="1"/> 

que no es aconsejable.

4

Su comportamiento esperado solía ser el comportamiento en 1.1. En general, se consideró que era una mala idea. Cuando tiene una excepción no controlada en cualquier hilo, su proceso puede dejarse en un estado incoherente. Las actualizaciones de los datos compartidos se pueden aplicar parcialmente, etc. El tiempo de ejecución no tiene la información para manejar este escenario de manera segura, o incluso saber cómo se desea manejar este escenario, por lo que su elección equivaldría a terminar el hilo y dejar su programa en un estado extraño. Esto podría ocasionar fugas de recursos, bloqueos, corrupción de datos, etc. Al finalizar el proceso debido a una excepción no controlada usted sabe exactamente lo que sucede, el proceso finaliza.

7

El comportamiento predeterminado en las aplicaciones .NET es salir cada vez que se produce una excepción no controlada. Cuando una excepción no se maneja, el programa se encuentra en un estado desconocido y posiblemente inestable. El hecho de que sucedió en un hilo de fondo no significa que el error no afectará el resto del programa. El curso más prudente para el tiempo de ejecución en esa situación es volcar el programa.

Puede consultar AppDomain.CurrentDomain.UnhandledException, que le permitirá detectar excepciones no controladas y reaccionar en consecuencia. Una mejor solución es envolver su proceso de hilo con un try...catch. Pero solo debe manejar esas excepciones que sabe cómo manejar. Hacer esto:

void MyThreadProc() 
{ 
    try 
    { 
     // ... 
    } 
    catch 
    { 
     // handle all exceptions 
     // This is a BAD idea 
    } 
} 

¿Es realmente una mala idea, ya que puede enmascarar excepciones que usted realmente desea que se propagan al programa principal.

Cuestiones relacionadas