Czy "wyrzucanie" wyjątków za pomocą zdarzeń to dobra praktyka? Jeżeli tak, to czy należy również wyrzucać klasycznie w metodzie? W skrócie czy wyrzucanie wyjątków za pomocą zdarzeń jest to osłodzenie czy alternatywa?
Ale jak niby zdarzenie ma rzucić wyjątek? Chodzi Ci o kod metody obsługującej zdarzenie? Może pokaż jakiś przykład kodu, żeby było jaśniej.
event Action<Exception> Failed;
Generalnie konwencja jest taka, że ze zdarzenia przesyłamy do konsumenta object
będący instancją klasy wyzwalającej zdarzenie, a dodatkowe dane przesyłamy w klasie dziedziczącej z EventArgs
. Tylko opakowywanie tak wyjątku nie ma za bardzo sensu... nie widzę też sensu w przesyłaniu wyjątku przez zdarzenie. W czym byłoby to lepsze od rzucania wyjątku bezpośrednio? Rozwiązuje to jakiś Twój konkretny przypadek w kodzie?
Nie rozumiem po co wysyłać ten objekt? Tworzę osobny event dla każdej metody asynchronicznej i nie wiem do czego miałby mi się przydać ten obiekt identyfikujący źródło. Dodatkowo nie rozumiem również tworzenia argsów. Jeżeli resultatem jakiejś czynności będzie kilka właściwości, to deleguję to do jednego serwisu i te właściwości będą należeć do niego, a nie na siłę wpycham w argsy, żeby nie zrobił się burdel i żebym mógł kilka czynności zmieścić w jednym serwisie.
Ja tak to rozumiem, ale za dużego doświadczenia nie mam. Mam nadzieję, że zrozumiale opisałem.
Rozwiązuje może nie, jednak mam wrażenie że mogę czyściej oprogramować korzystanie z modelu. Ale to tylko takie moje fanaberie.
Widziałem parę razy wykorzystanie takiego modelu rzucenia wyjątków. Generalnie pytam, bo chcę się dobrych praktyk nauczyć, a mam wątpliwości.
Jakie są korzyści z przesyłania object?
Niestety nie mam skąd wziąć tej wiedzy, a bardzo chciałbym wiedzieć.
Korzyści są na przykład takie, że jak masz zdarzenie podpięte do kilku obiektów, to wiesz który obiekt zdarzenie wywołał i wykonać na nim jakieś operacje.
Czyli tak jak podejrzewałem.
Jednak czasem warto się zastanowić, niż po prostu ślepo stosować jakąś konwencje, bo większość ją stosuje.
Konwencje się stosuje, bo są konwencjami.
Pytałeś o dobre praktyki, a jak dostałeś odpowiedź, która Ci się nie podoba, to je negujesz. To po kiego grzyba pytałeś, skoro nie chciałeś wiedzieć?
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.