W ciągu pół roku od WinForm-MVP zaprojektowałem następującą strategię obsługi wyjątków. Mam podstawowej abstrakcyjnej klasy Presenter z kilkoma metodami Execute przyjmującymi delegata jako parametr wejściowy (sygnatury różnią się). Interakcja między View i Presenter odbywa się poprzez zdarzenia (dane wejściowe) zdefiniowane w IView oraz poprzez ustawienie właściwości publicznych (output) lub metod wywoływania zdefiniowanych w IView oraz implementowanych przez View. Każda procedura obsługi zdarzenia w prezencie wywołuje jedną z metod Execute, zapewniając jej konkretną realizację.Poinformowanie użytkownika końcowego o wyjątkach w WinForm-MVP i WPF-MVVM
W metodzie wykonywania mam kilka bloków przechwytujących dla bardzo określonych wyjątków, które mogą wystąpić (głównie z powodu problemów z szeroko stosowanymi komponentami zewnętrznymi). Każdy z tych wyjątków zatrzymuje wykonywanie bieżącej operacji, jest rejestrowany i pokazywany użytkownikowi z sensownym wyjaśnieniem, wywołując metody View.
Nie tak dawno temu (w rzeczywistości BARDZO nie tak dawno temu) Zacząłem uczyć się WPF-MVVM, który od pierwszego spojrzenia wydaje się mieć wiele wspólnego z MVP. Szukałem tam kilku przydatnych wskazówek dotyczących strategii obsługi wyjątków (głównie informowanie użytkownika o problemach), ale na ogół trudno jest znaleźć to pytanie - mam na myśli, że wiele się mówi, ale głównie co do zasady. Znalazłem ponad 20 przykładów "obsługi" nieobsługiwanych wyjątków w pliku app.xaml.cs, wszystko jest bardzo miłe, ale powiedz mi szczerze - jeśli znasz dokładne wyjątki, które mogą spowodować awarię aplikacji, nie będziesz obsługiwać ich trochę wcześniej (nawet jeśli będziesz zmuszony zamknąć swoją aplikację)? Nie jestem zwolennikiem łapania wszystkich możliwych wyjątków. Sporo wyjątków spowodowanych problemami z siecią, chwilową niedostępnością bazy danych itp. Należy obsługiwać bez zamykania aplikacji bez przerażających ikon błędu, które dają zwykłemu użytkownikowi szansę powtórzenia jego żądania.
W ramach eksperymentu wypróbowałem prawie to samo, co opisałem wcześniej - Stworzyłem wydarzenia w ViewModel, aby przejść na wyjątki i zasubskrybować Wyświetl dla nich. Ale, szczerze mówiąc, ta droga daje mi gęsią skórkę.
(To była bardzo długa przemowa, wiem) Pytanie: jak sobie radzisz z wyjątkami dotyczącymi informowania użytkownika podczas korzystania z MVVM? Nie, na razie nie jestem zainteresowany weryfikacją danych. Mile widziany jest również wszelka krytyka i/lub porady dotyczące MVP.
Z której części się martwisz? Wczesne łapanie lub późne łapanie? Jeśli nie wcześnie złapałeś, czy myślisz, że ma to coś wspólnego z WPF/MVVM? –