Работа с AggregateException: Handle
CSharpCookingИногда полезно перехватывать исключения только специфических типов, а исключения других типов генерировать повторно. Метод Handle класса AggregateException предлагает удобное сокращение. Он принимает предикат исключений, который будет запускаться на каждом внутреннем исключении:
public void Handle (Func<Exception, bool> predicate)
Если предикат возвращает true, то считается, что исключение "обработано". После того, как делегат запустится на всех исключениях, произойдет следующее:
– если все исключения были "обработаны" (делегат возвратил true), то исключение не генерируется повторно;
– если были исключения, для которых делегат возвратил false ("необработанные"), то строится новый объект AggregateException, содержащий такие исключения, и затем он генерируется повторно.


Например, приведенный на слайдах код в конечном итоге повторно генерирует другой объект AggregateException, который содержит одиночное исключение NullReferenceException.
#обработкаисключений #aggregateexception #handleexception #trycatch #asyncawait #taskcancellation #csharp #dotnet #developer #programmingtips #исключения #ошибки #программирование #разработка #кодинг #программист #coder #codinglife #developerlife #softwaredevelopment #computerscience #it #tech #geek #codejokes #programmingmemes #justdeveloporthings #visualstudio #multitasking #parallelprogramming