Il comportamento predefinito nelle applicazioni .NET è di uscire ogni volta che si verifica un'eccezione non gestita. Quando un'eccezione non viene gestita, il programma si trova in uno stato sconosciuto e forse instabile. Solo perché è accaduto in un thread in background non significa che l'errore non influenzerà il resto del programma. Il corso più prudente per il runtime in quella situazione è scaricare il programma.
È possibile esaminare AppDomain.CurrentDomain.UnhandledException
, che consente di rilevare eccezioni non gestite e reagire di conseguenza. Una soluzione migliore è quella di avvolgere il tuo thread proc con un try...catch
. Ma ha solo gestire le eccezioni che sa come gestire. In questo modo:
void MyThreadProc()
{
try
{
// ...
}
catch
{
// handle all exceptions
// This is a BAD idea
}
}
è una pessima idea, perché può mascherare le eccezioni che davvero si desidera essere propagate al programma principale.
fonte
2011-01-30 15:36:37