Поскольку вызов события означает, что вызывающий абонент не знает о вызываемом абоненте:
Вызов обработчика события должен быть устойчивым перед лицом произвольных исключений. Все, что нужно для стека вызовов, должно правильно очищать собственный беспорядок на случай, если произойдет что-то совершенно неожиданное.
Обработчики событий должны действительно избегать создания исключений.
Такие вещи, как исключения с нулевыми ссылками, действительно непростительны в любом коде, поэтому, очевидно, нас это не беспокоит.
Такие вещи, как исключения файлового ввода-вывода, всегда могут происходить при записи или чтении файла, поэтому я бы избегал ввода-вывода в обработчике событий. Если имеет смысл выполнять IO в обработчике событий, то также имеет смысл обрабатывать исключения IO в обработчике. Не распространяйте это обратно звонящему. Найдите способ справиться с этим.