Информирование конечного пользователя об исключениях в Winforms-MVP и WPF-MVVM

За полгода Winforms-MVP я разработал следующую стратегию обработки исключений. У меня есть базовый абстрактный класс Presenter с несколькими Execute методы, принимающие делегат в качестве входного параметра (сигнатуры различаются). Взаимодействие между View и Presenter осуществляется через события (вход), определенные в IView, и путем установки общедоступных свойств (выход) или методов вызова, определенных в IView и реализованных View. Каждый обработчик событий в презентаторе вызывает один из методов Execute, обеспечивающих его конкретную реализацию.

В методе execute у меня есть несколько блоков catch для очень определенных исключений, которые могут произойти (в основном из-за некоторых проблем во внешних компонентах, которые Каждое из этих исключений останавливает выполнение текущей операции, регистрируется и отображается пользователю с понятным объяснением путем вызова методов View.

Не так давно (на самом деле ОЧЕНЬ не так давно) я начал изучать WPF-MVVM, который, на первый взгляд, имеет много общего с MVP. Я искал там несколько полезных советов относительно стратегии обработки исключений (в основном информирование пользователя о проблемах), но эти вопросы трудно найти в целом - я имею в виду, много говорится, но в основном в принципе. Я нашел более 20 примеров «обработки» необработанных исключений в app.xaml.cs, все это очень хорошо, но скажите мне искренне - если вы знаете точные исключения, которые могут привести к сбою вашего приложения, вы не будете обрабатывать их немного раньше (даже если вам придется закрыть приложение)? Я вовсе не фанат отлавливания всех возможных исключений. Довольно много исключений, которые вызваны проблемами сети, временной недоступностью базы данных и т. Д., Следует обрабатывать, не закрывая приложение, без пугающих значков ошибок, дающих обычному пользователю возможность повторить свой запрос.

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

(Я знаю, это была очень длинная речь) Вопрос: как вы обрабатываете исключения в том, что касается информирования пользователя при использовании MVVM? Нет, меня пока не интересует проверка данных. Любая критика и / или совет по поводу MVP также приветствуются.

6
задан 26071986 24 June 2011 в 19:48
поделиться