Ответ 1
@Ani уже ответили на ваш вопрос. Хотя я не согласен с тем, что необработанные исключения в потоках должны прерывать приложения. Использование потоков обычно означает, что у вас есть какое-то серверное приложение. Приведение в действие может привести к множеству гневных пользователей.
Я написал небольшую статью о правильной обработке исключений: http://blog.gauffin.org/2010/11/do-not-catch-that-exception/
Вы всегда должны ловить исключения для потоков. Обычно я использую следующий шаблон:
void ThreadMethod(object state)
{
try
{
ActualWorkerMethod();
}
catch (Exception err)
{
_logger.Error("Unhandled exception in thread.", err);
}
}
void ActualWorkerMethod()
{
// do something clever
}
Намного проще найти методы потоков, которые неправильно обрабатывают исключения, перемещая логику в отдельный метод и просто сохраняя блок try/catch в методе потока.