Работа с 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:01:38 1
▶️В Госдуме предложили сократить срок действия договора ОСГОП для такси
2 months ago 00:00:30 1
создание видео с помощью ИИ
2 months ago 00:00:31 1
️ Прокурор республики Максим Попов посетил с рабочей поездкой Усть-Янский и Булунский районы
2 months ago 00:06:12 1
Николай Платошкин: Набиуллина игнорирует слова Путина?
2 months ago 00:01:00 1
если меня спросят, что такое работа мечты
2 months ago 00:06:37 1
💬 11 сентября в распоряжении СМИ оказались снятые разведывательным дроном российских Вооруженных Сил
2 months ago 00:01:54 1
Антенна clear tv key отзывы ⚫ Самодельная антенна для цифрового телевидения своими руками в деревне
2 months ago 00:00:54 1
Почему государственные программы России никем не финансируются #кирбирева #галко #экономика #россия
2 months ago 00:05:37 1
СТЕКЛЮР, как окрашивать? Совместимость с акрилом
2 months ago 00:17:08 1
Мощный сеанс Рейки за 10 минут. Учим пробивать БЛОКИ В ТЕЛЕ силой потока рэйки. Школа Рейки Интенсив
2 months ago 00:02:18 1
DJ Сталин - Январская Вьюга ( нейро клип )
2 months ago 00:11:43 1
Вылечить колени. Супер - упражнение для лечения коленных суставов! Быстрое улучшение. “Скольжение“.
2 months ago 00:05:34 1
В одной из школ Мариуполя начали работу инженерные классы авиационной направленности
2 months ago 00:01:42 1
Токарные станки с ЧПУ СТ16А18
2 months ago 00:14:15 1
Фермеры встретятся с Санду/ В колледжах вербовали девушек/ Цыку и Фуртунэ сдали подписи
2 months ago 00:01:15 1
Госавтоинспекторы Астрахани и Волгограда подвели итоги совместной работы
2 months ago 00:10:47 1
Как получить ответ на волнующий вас вопрос. Карл Юнг. Его знаменитый тест №2.
2 months ago 00:00:37 1
Ростовая кукла Змея Сия Голубая
2 months ago 00:47:43 1
HIIT Тренировка НА ВСЕ ТЕЛО с Гантелями. Сжигаем 450 калорий!
2 months ago 00:11:44 1
Кому и зачем нужен ответственный за БДД (специалист по обеспечению БДД)?
2 months ago 00:05:18 1
#0 Приветственное слово С.В.Молоткова
2 months ago 00:13:01 1
Лукашенко поздравил белорусов с праздником! | День народного единства в Беларуси | Новости