Практики управления исключениями внутри обработчиков событий - PullRequest
7 голосов
/ 05 января 2012

.NET 4.0, C #

Я пытаюсь добавить некоторую структуру управления исключениями в свой проект. Фреймворк публикует исключения в базе данных, если это возможно.

Я провел большое количество исследований по обработке исключений, но у меня возникли некоторые проблемы с пониманием того, как я должен обрабатывать исключения, возникающие внутри обработчиков событий (то есть timer.elapsed или асинхронный обратный вызов). Должен ли каждый обработчик событий иметь блок try catch?

Спасибо!

1 Ответ

16 голосов
/ 05 января 2012

Обработчик события должен всегда иметь в своем теле блок try..catch..finally, чтобы обработчик события не распространял исключение. Кроме того, ожидается, что обработчики событий будут выполняться быстро, поэтому избегайте дорогостоящих операций ввода-вывода или базы данных внутри самого обработчика событий.

Кроме того, у вас может быть свойство типа Ошибка , чтобы указать подписчикам события, что произошла ошибка (в случае асинхронного вызова).

Дополнительная информация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...