Работа с 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
488
145
7 months ago 01:21:00 1
Оформил окна изнутри. Внук, 27 серия
7 months ago 00:03:11 1
Navai, MACAN - Где-то в глубине сердца
7 months ago 00:03:53 1
Проект одноэтажного дома 9х10 с террасой: спальня, кухня гостиная, ванная, кладовая, гардеробная
7 months ago 01:14:01 1
Ольга Будина: Белгород, Арестович и Галкин /// ЭМПАТИЯ МАНУЧИ
7 months ago 00:46:26 1
TRX Challenge. Тренировка с петлями ТРХ на всё тело | DAY 3
7 months ago 00:31:11 1
Звезда, которую мы ПОГУБИЛИ - Честер Беннингтон из группы Linkin Park
7 months ago 00:43:27 1
Реализация дизайн-проектов | Обзор объектов | In Interior Studio | 5 апреля 2024 года
7 months ago 01:32:06 1
САВЕЛЬЕВ о пузыре искусственного интеллекта, работе мозга, роботизации людей и аферах Илона Маска
7 months ago 00:20:18 1
СПИНА, РУКИ, ГРУДЬ! Тренировка с Бутылками для НОВИЧКОВ
7 months ago 00:00:59 1
💹 ТОП-5 Индикаторов для ТРЕЙДИНГА Криптовалют, которые РЕАЛЬНО Работают #трейдинг #биткоин #крипта
7 months ago 00:09:42 1
Как в СССР появились кирзовые сапоги
7 months ago 00:08:59 1
Памяти участника специальной военной операции Василия Рейделя
7 months ago 00:05:50 1
Как работает эффект плацебо?
7 months ago 00:07:28 1
Как проводится спирометрия?
7 months ago 01:08:43 1
Вскрылась правда о Крокусе! Путин веселится, Зеленский готов к переговорам
7 months ago 00:01:07 1
Как люди остаются без жилья из-за Департамента гор.имущества г.Москвы.
7 months ago 01:28:31 1
Шерман-стрим. Я дрался на Тихом океане.
7 months ago 00:27:16 1
Как обеспечить прозрачность “черного ящика“?
7 months ago 00:24:54 1
История про обучение Рейки. Про деньги, обман и жизненный урок. Плата за Рэйки. Школа Рейки Интенсив
7 months ago 01:13:56 1
Как вербует ФСБ. Израилю дали, а Украине нет.
7 months ago 00:04:07 1
Автоматизация и заработок Telegram Master целевой трафик