Является ли это верным примером правильной обработки исключений? - PullRequest
0 голосов
/ 13 января 2012

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

Пример настройки, которую я использовал:

  1. Мобильное устройство выполняет вызов в службу WCF.
  2. Служба WCF извлекает данные из базы данных, и если на уровне базы данных возникают какие-либо ошибки, они регистрируются, и мне отправляется электронное письмо.
  3. Служба WCF отправляет данные (или краткое описание исключения) на мобильное устройство.
  4. Мобильное устройство обрабатывает данные и, если возникает какая-либо ошибка, выдает ошибку до уровня пользовательского интерфейса.

Для некоторых исключений я создал пользовательские - исключение службы, исключение авторизации, чтобы я мог надлежащим образом уведомить пользователя. Если служба обнаружила ошибку или возникла исключительная ситуация IOException, пользователь будет уведомлен о том, что «данные не могут быть получены».

Если, однако, возникает другая ошибка - например, ошибка JSON или что-то подобное «на всякий случай», ошибка выбрасывается на уровень пользовательского интерфейса и просто перехватывается как Exception, поскольку нам на самом деле не нужно пользователю знать, что произошло, но произошла ошибка.

Это соответствующая обработка исключений?

Ответы [ 2 ]

0 голосов
/ 13 января 2012

«Соответствующая обработка исключений» всегда будет а) зависимой от приложения и б) субъективной - поэтому нет однозначного ответа.

В общем, я бы сказал, что вам необходимо выполнить все следующие действия:

  1. Определенно адресуйте и обрабатывайте соответственно все вероятные исключения.
  2. Предусмотрена возможность поймать все, чтобы предотвратить незаметное завершение.
  3. Уведомлять пользователя о непредвиденных ошибках, если есть вероятность, что это повлияет на их данные или использование (т. Е. Не маскировать ошибки, которые могут повлиять на пользователя)

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

0 голосов
/ 13 января 2012

Вы видите какие-либо проблемы?

В общем, имеет смысл иметь какой-то универсальный способ, позволяющий пользователю продолжать работать.Это должно сочетаться с соответствующей обработкой для любых показов, чтобы изящно подвести пользователя и поймать что-либо еще, что сделало бы процесс опасным.

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