2015-04-27 4 views
0

Я работаю над библиотекой, которая обрабатывает соединение с различными серверами imap (почтовым провайдером), например (Gmail, Outlook, Yahoo, Orange ...).Уместно ли использовать шаблон Factory/delegate для обработки исключений?

В теме один метод запрашивает токен доступа с использованием токена обновления (OAuth2), этот метод может вызывать исключение по многим причинам (доступ отменен, недействителенПараметр, badRequest, invalidCredentials, dailyLimitExceeded или нет соединения ... Google Error Responses).

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

Вопрос: Уместно ли использовать Factory/делегат (# C) шаблон для обработки различного типа исключений? Или я должен обрабатывать это по-другому?

Спасибо, и извините за мой английский.

+3

так что вы просите наши мнения о коде, который мы не видим? uhmm ... – Carsten

+0

IMHO делегат в этом случае звучит разумно, я бы попытался сохранить код простым и удобочитаемым. Наличие большого количества строк в 'catch', вероятно, ухудшит читаемость, поэтому я не понимаю, почему нет. Не уверен, однако, о заводской схеме здесь, действительно ли вы хотите создавать объекты в 'catch'? – oleksii

+0

@ CarstenKönig, я просто спрашиваю, целесообразно ли использовать делегат для обработки разных исключений, я не вижу, какой код будет полезен. В любом случае, спасибо. – Mazyad

ответ

0

Прежде всего, чтобы подчиниться принципу «открыто/закрыто», вы должны написать базовый класс или интерфейс с помощью метода «void HandleError (исключение исключения)» или аналогичного. Затем вы получаете класс для каждой ошибки, которую хотите обработать. Если вы используете какой-либо контейнер IoC/DI, он может создать для вас всевозможные обработчики. В противном случае ваша инициализация должна создать все экземпляры.

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

Смежные вопросы