Обработка исключений в параллельных потоках выполнения имеет свои особенности. 3
При использовании библиотеки PFX при возникновении исключения в задаче оно обрабатывается средствами библиотеки и перенаправляется в ту задачу, которая ожидает завершения данной. 1
При одновременном возникновении нескольких исключительных ситуаций все они собираются в единое исключение типа System.Threading.AggregateException, которые переправляются дальше по цепочке вызовов задач. 1
Если возникла одна исключительная ситуация, то на её основе будет создан объект класса AggregateException для единообразной обработки всех исключительных ситуаций. 1
Общий принцип перехвата исключений в параллельной программе — перехватывать их как можно ближе к месту их возникновения. 1 Например, если программа представляет собой иерархию задач, то если есть возможность перехвата исключений в теле задач самого низкого уровня, то именно там нужно применить механизм на базе конструкций try-catch. 1
Ещё один подход — все исключительные ситуации перехватываются и собираются в единую структуру данных в теле параллельной конструкции, а после окончания её исполнения эта структура передаётся, при необходимости, на более высокий уровень приложения. 1 Это позволяет избежать досрочного прекращения исполнения параллельной конструкции при возникновении исключительной ситуации в одном из рабочих потоков. 1