0

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

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

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

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

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

Это подходящая обработка исключений?

ответ

0

У вас возникли проблемы?

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

0

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

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

  1. Конкретно обращаться и обрабатывать соответствующим образом все возможные исключения.
  2. Предоставлено все, чтобы предотвратить некачественное завершение.
  3. Уведомить пользователя о неожиданных ошибок, если есть потенциал будет осуществлять свои данные или использования (то есть - не маскируют ошибки, которые могут повлиять на пользователя)

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