Работа с AggregateException | Параллельное программирование
Инфраструктура PLINQ, класс Parallel и объекты Task автоматически маршализируют исключения потребителю, то есть исключения автоматически перехватываются и повторно генерируются для вызывающего потока. Но, к сожалению, дело не сводится просто к перехвату DivideByZeroException. Поскольку параллельные библиотеки задействуют множество потоков, вполне возможна одновременная генерация двух и более исключений. Чтобы обеспечить получение сведений обо всех исключениях, по указанной причине исключения помещаются в контейнер AggregateException, свойство InnerExceptions которого содержит каждое из перехваченных исключений.
Как инфраструктура PLINQ, так и класс Parallel при обнаружении первого исключения заканчивают выполнение запроса или цикла, не обрабатывая любые последующие элементы либо итерации тела цикла. Однако до завершения текущей итерации цикла могут быть сгенерированы дополнительные исключения. Первое возникшее исключение в AggregateException доступно через свойство InnerException.
AggregateException часто содержит другие AggregateException. Например, когда дочерняя задача генерирует исключение. Чтобы упростить обработку, можно устранить вложенность, вызвав Flatten. Данный метод возвращает новый объект AggregateException с плоским списком внутренних исключений. Это позволяет избежать перебора вложенных AggregateException и упрощает код обработки ошибок из параллельных операций.
Иногда полезно перехватывать исключения только специфических типов, а исключения других типов генерировать повторно. Метод Handle класса AggregateException предлагает удобное сокращение. Он принимает предикат исключений, который будет запускаться на каждом внутреннем исключении. Если предикат возвращает true, то считается, что исключение “обработано”. После того, как делегат запустится на всех исключениях, произойдет следующее:
– если все исключения были “обработаны” (делегат возвратил true), то исключение не генерируется повторно;
– если были исключения, для которых делегат возвратил false (“необработанные”), то строится новый объект AggregateException, содержащий такие исключения, и затем он генерируется повторно.
Учебные материалы к данному видео доступны по ссылке:
#ПараллельноеПрограммирование #AggregateException
16 views
585
179
4 days ago 00:02:20 3
Будущее России начинается с молодёжи
4 days ago 00:01:01 1
Двигатель “выпрыгивает“ из-под капота при нажатии на газ? Появились вибрации при работе на холостых?
5 days ago 00:27:54 1
۩⛔ФАТАЛЬНАЯ ОШИБКА ТЕПЛОГО ПОЛА |Вред теплого пола | Полы в ЧАСТНОМ ДОМЕ |Демонтаж теплого пола۩
5 days ago 00:50:32 1
Проект “МАСТЕР“. Интервью с Кристиной Эссен-Блюменштайн 2012 год #психология #mamakifilm
5 days ago 00:00:47 1
Чиновник посмеялся над волонтерами в Анапе
5 days ago 04:30:18 2
Волков – что происходит с ФБК / вДудь
5 days ago 00:00:13 8
Маск показал странные жесты прямо на инаугурации Трампа
6 days ago 00:34:35 3
Прямая линия Путина -зачем он это сделал. Бузова как символ путинизма. Похороны Кириллова.
6 days ago 00:07:44 1
Молитва на возврат энергий. Прощение. Очень мощная молитва!
7 days ago 02:07:20 1
Докога ние, гражданите, имащи разни политически убеждения, ще се джафкаме: а може ли да се обединим?
7 days ago 00:18:33 2
ЭСКОРТ 2023. Сколько живут и как зарабатывают современные сутенеры. Интервью
7 days ago 00:11:23 2
«Очень много секса и очень мало денег»: сколько зарабатывают российские эскортницы в Дубае
1 week ago 00:05:38 14
К Неизведанному (Полная версия, Suno, Kling, Fooocus, ClaudeAI, VideoAI, MusicAI)
1 week ago 03:26:43 1
💔😢Променял на МОЛОДУЮ ЛЮБОВНИЦУ. Изменить судьбу | ЛУЧШИЕ ДРАМЫ | МЕЛОДРАМЫ 2024
1 week ago 00:13:10 1
Нет молчаливого согласия цифровому рублю, есмь встречное предложение:
1 week ago 02:31:25 1
КАК СОХРАНИТЬ ЗДОРОВЬЕ: Клинический случай на пределе человеческих возможностей и здоровья!
1 week ago 00:20:16 2
Lignose-Einhand и приспособление Хылевского
1 week ago 01:29:57 1
Счастливый маршрут 4K (мелодрама)
1 week ago 00:19:34 2
Трое Вас и трое нас. Притчи. Православный художественный фильм
1 week ago 00:12:18 2
Трамп начал переговоры / Война заканчивается?
1 week ago 00:16:37 1
Обзор УЗИ аппарата Mindray Consona N7
1 week ago 02:13:30 2
Генерал ФСО РФ Ратников о слиперах-контактерах и гипно-трансовых методиках.
1 week ago 00:08:59 1
ЗАРАБОТОК ОТ 10000т.р в месяц Новый проект для быстрого Заработка в интернете в 2024 году