2016-07-18 6 views
0

Я думаю, что это скорее вопрос стиля, просто попытка найти лучший способ.C#, асинхронная функциональная цепочка, где обрабатывать исключение

У меня есть следующий сценарий ...

  1. функция DB выполняется в асинхронном режиме (для выборки данных task.run с данными адаптером и для не запроса с использованием асинхронных функций, предоставляемых ADO.NET).

  2. Результат функции DB (data fetching) передается вспомогательным функциям, которые создают списки объектов для извлеченных данных.

  3. Пользовательский интерфейс, который использует списки объектов, возвращаемые вспомогательными функциями.

UI также проходит вниз отмены задачи маркер вспомогательных функций -> DB функции, так что задачи асинхронных могут быть отменены в момент закрытия пользовательского интерфейса.

Теперь любое исключение, созданное функцией БД, можно обрабатывать во всех трех точках, а именно на уровне функциональности БД, уровне вспомогательной функции и уровне пользовательского интерфейса. Но какое должно быть лучшее место для его обработки (в том числе исключение отмены задачи).

ответ

2

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