Некоторые ответы здесь предполагают, что нехорошо выбрасывать из обработчика событий («создает хаос для вашего абонента», «это приводит к очень сложным ситуациям и неожиданному поведению», ...).
ИМХО, это чепуха.
В случае general вполне нормально бросать из обработчика событий.Другие обработчики событий, конечно, не будут запускаться - ни обработчик событий, который выбрасывает run, до конца, ни какой-либо другой код между срабатыванием события и точкой, в которой оно было перехвачено.И что?Совершенно нормально, что код не выполняется, когда выдается исключение - если вам нужно гарантировать, что оно выполнено, тогда используйте блок finally.
Конечно, в любом конкретном случае вы можете захотетьподумайте, какие исключения, если таковые имеются, целесообразно обрабатывать так же, как и в любом другом коде.
Как всегда, не существует жестких и быстрых правил, которые применяются при любых обстоятельствах.Один из ответов здесь гласит: «Обработчики событий должны быть быстрыми ... и почти безошибочными ...».Контрпример - это событие ASP.NET Page.Load.
Общее правило в .NET - почти всегда плохая идея проглотить все исключения: это относится к обработчикам событий так же, как и к любому другому коду..
Таким образом, ответ на первоначальный вопрос "существуют ли когда-либо обстоятельства, при которых метод, ответственный за прослушивание события, вызывающего исключение, является приемлемым, совершенно определенно да .
Точно так же, как ответ на вопрос «существуют ли какие-либо обстоятельства, при которых метод, ответственный за прослушивание события, которое может поглотить исключения, является приемлемым», - это тоже да.