Ответ 1
Короче говоря, исключение в каждом цикле агрегировано и представлено в разделе "Агрегатное исключение". Всякий раз, когда возникает исключение, завершаются циклы, которые запускаются, но никаких новых циклов не запускается. ForEach имеет много перегрузок, которые позволяют иметь локальные init и, наконец, блоки и действие тела также принимают ParallelLoopState этот цикл кода тела может использоваться для проверки возникновения исключения в другом цикле, а затем, если необходимо, разбивать его самостоятельно.
См. в этой статье, которая содержит дополнительную информацию