В течение полугода Winforms-MVP я разработал следующую стратегию обработки исключений.У меня есть базовый абстрактный класс Presenter с несколькими методами Execute, принимающими делегат в качестве входного параметра (подписи меняются).Взаимодействие между представлением и представителем осуществляется через события (входные данные), определенные в IView, и путем установки открытых свойств (выходных данных) или вызова методов, определенных также в IView и реализованных представлением.Каждый обработчик событий в презентаторе вызывает один из методов Execute, предоставляя ему конкретную реализацию.
В методе execute у меня есть несколько блоков catch для очень определенных исключений, которые могут возникнуть (главным образом из-за некоторых проблем во внешних компонентах).которые широко используются).Каждое из этих исключений останавливает выполнение текущей операции, регистрируется и показывается пользователю с подробным объяснением, вызывая методы View.
Не так давно (на самом деле ОЧЕНЬ не так давно) я начал изучать WPF-MVVM, который, на первый взгляд, имеет много общего с MVP.Я искал там несколько полезных советов относительно стратегии обработки исключений (в основном, информируя пользователя о проблемах), но в целом эти вопросы трудно найти - я имею в виду, что много сказано, но в основном в принципе.Я нашел более 20 примеров «обработки» необработанных исключений в app.xaml.cs, все это очень хорошо, но скажите мне искренне - если вы знаете точные исключения, которые могут привести к сбою приложения, не будете ли вы обрабатывать ихнемного раньше (даже если вы будете вынуждены закрыть свое приложение)?Я ни в коем случае не фанат ловить все возможные исключения.Довольно много исключений, которые вызваны проблемами с сетью, временной недоступностью базы данных и т. Д., Должны обрабатываться без закрытия приложения без значков страшных ошибок, дающих обычному пользователю возможность повторить свой запрос.
Так что в качестве эксперимента я попробовал почти то же самое, что описал ранее - я создал события в ViewModel для перехода к исключениям и подписался на них View.Но, честно говоря, этот способ вызывает у меня мурашки.
(это была очень длинная речь, я знаю) Вопрос: как вы обрабатываете исключения в том, что касается информирования пользователя при использованииMVVM?Нет, я не заинтересован в проверке данных только сейчас.Любая критика и / или советы по поводу MVP также приветствуются.