Работа с 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
2 months ago 00:13:46 1
НАЦИОНАЛКА ГЕРМАНИИ | ЭТО ВАМ НЕ АВТОБАН
2 months ago 01:06:01 1
Манипуляции: как распознать и как противостоять? | Нина Зверева и Петр Антонец #семейноедело
2 months ago 00:00:59 1
Как избавиться от перхоти без лекарств и шампуней!
2 months ago 00:16:30 1
В объятиях Дракулы. Часть 3. Обитель вампиров. #мулдашев
2 months ago 01:16:09 1
SokolovBrothers - работа в шоу бизнесе, ошибки в поклонении / Чай с Жасмин
2 months ago 00:33:36 1
к.ф.-м.н. Стригин М.Б. Четыре этапа эволюции мышления: экспликация мирового разума
2 months ago 00:08:34 1
Путин встретился с создателями ракеты «Орешник»
2 months ago 00:19:44 1
Лекарства от ПАРАЗИТОВ убивают РАК? Свежие научные факты от доктора-онколога
2 months ago 00:44:08 1
Возможно ли в России сопротивление? | Роман Попков, Легион «Свобода России» | подкаст
2 months ago 00:41:41 1
Мотопутешествие по Китаю на китайском мотоцикле, купил Мотоцикл в Китае, получил китайские права.
2 months ago 00:01:01 1
Спустились с гор🤣
2 months ago 00:07:34 1
Запись голоса без задержек: хак, который изменит твою жизнь
2 months ago 00:55:22 1
Как написать РЕГГИ с нуля. Пишу трек и делюсь крутыми фишками по созданию Reaggae
2 months ago 00:10:44 1
Как работает STALKER 2: Heart of Chornobyl на Xbox и ПК? Технический обзор
2 months ago 00:15:04 1
The Economist обложка-прогноз на 2025 год № 5755
2 months ago 00:13:50 1
Как всё устроено на Земле #грядущее #весталия_сорадение #белый_свет
2 months ago 00:09:25 1
Анти дневник желаний. Уникальная техника исполнения желаний, которая работает на все 100%.
2 months ago 00:04:42 1
ДДТ — Долго...
2 months ago 00:10:42 1
Танки НАТО стянуты к границе РФ / Военная готовность Польши
2 months ago 00:37:26 1
Fullstack-разработчица | Рынок труда в 2024 году | Перспективы IT в Казахстане
2 months ago 00:11:22 17
МУЖСКАЯ РАБОТА 1 ВЫПУСК - ПЬЯНЫЙ В СТЕЛЬКУ ИГОРЁК С ТРУДОМ ВЫГОВАРИВАЕТ СЛОВА
2 months ago 00:08:58 1
Как поехать в круиз с Гринвей БЕСПЛАТНО. Путешествия с Гринвей (новые условия)
2 months ago 01:33:20 3
Оптимизация тестирования с использованием Pytest // Демо-занятие курса «Python QA Engineer»