Я пишу приложение WinForms, которое принимает динамические элементы управления пользовательского интерфейса в виде плагинов (например, виджетов). Для этого основная функция каждого плагина возвращает UserControl, который затем добавляется в основную форму.
Так как мое приложение не имеет прямого контроля над ними, я бы хотел «песочницей» плагинов в исключительных случаях, чтобы, если один из UserControls выдавал ошибку, я мог ее перехватить и выгрузить виновного. Очевидная проблема заключается в том, что элементы UserControls управляются событиями и могут генерировать исключения в миллионе различных мест, поэтому у меня нет ничего, что можно обернуть в блок try / catch.
Как я могу поймать исключения, выдаваемые динамическими UserControls или что было бы лучше для такого модульного приложения?