Хорошо, чтобы поместить Exception в EventArgs? - PullRequest
1 голос
/ 05 апреля 2011

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

Основной класс Messenger имеет два состояния - вошел в систему и вышел из нее.

Внутренние ошибки могут привести к выходу клиента из системы.

Например, DisconnectException (если SocketException происходит внутри) или ChallengeFailedException, если клиент не может выполнить вызов, выданный сервером сообщений.

Это нормально (или рекомендуется) передать исключение пользователю в LogoutEventArgs? например - LogoutEventArgs.Exception

Или есть более идеальный способ справиться с этим?

Ответы [ 2 ]

2 голосов
/ 21 марта 2012

У меня есть класс, который проглатывает некоторые известные исключения, такие как время ожидания сервера SQL. Это так, что моим клиентам не нужно иметь дело с этим, мой класс ловит это и возвращает перечисление ошибки. Я выявляю обнаруженные исключения исключительно, чтобы мои клиенты могли выбрать их регистрацию. Я не хочу, чтобы у моего класса были зависимости журналирования.

2 голосов
/ 05 апреля 2011

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

Если исключение выдается из другого потока , вы можете заключить его в другое исключение и выбросить в вызывающий поток.

Если это ожидаемое, общее состояние ошибки, то это зависит от того, что пользователь должен делать в этом случае. Что-то вроде перечисления или пользовательского класса Error может быть лучше, чем просто вставить исключение в объект EventArgs. Пользовательский объект может также включать ссылку на объект Exception.

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