MVC i obsługa wyjątków

0

Witam

Czy może mi ktoś wytłumaczyć taką kwestię:
Jak zaimplementować obsługę wyjątków w aplikacji opartej na MVC?.
Mając w modelu przykładowo obsługę bazy, przekazuje wyjątki SQL do np. DataBaseException,
nie wiem czy przekazywać ten wyjątek po kolei do widoku, czy po prostu po drodze otoczyć go jeszcze
jakimś wyjątkiem specyficznym dla widoku?. Jak to się robi?, w sumie widok nie powinien nic wiedzieć o istnieniu bazy itd.

I jeszcze jedna sprawa, czy dodawanie klauzuli:

    void add(E entity) throws Exception;

jest dopuszczalne w interfejsie?
Czy łamie to jakieś zasady jedynie słusznych implementacji interfejsów, bo tak patrze bo dokumentacji
to wyrzucają same wyjątki nie sprawdzane, a mi by pasowała taka definicja metod.

Pozdrawiam

0

Jeżeli to zrobiony przez ciebie interfejs, to możesz dodać klauzulę throws. Jeżeli natomiast implementujesz czyjś interfejs bez klauzuli throws, to nie możesz rzucać sprawdzanych wyjątków.

Proponuję jednak, aby metoda add rzucała nie ogólny Exception, a IOException albo nawet stworzony przez ciebie wyjątek, np. AddException.

Musisz otoczyć metodę, która zapisuje dane do bazy klauzulą try catch i w klauzuli catch rzucać wybrany wyjątek podając oryginalny wyjątek jako przyczynę.

Tak, czy inaczej użytkownik musi być poinformowany, że nie udało się zapisać danych.

0

Dzięki za podpowiedź.
Ja mam to zrobione w taki sposób ze w klasie implementującej ten interfejs, przerabiam to na zdefiniowany DatabaseException (zamiast throws Exception), i do niego przekazuje wszyskie błędy sql, zrobiłem tak dlatego, ze nie koniecznie dane muszą być pobierane z bazy danych, chciałem sobie w ten sposób zostawić furtkę na inne przypadki (typu pobierania danych z XML)

Tylko się teraz zastanawiam gdzie wyłapać ten wyjątek (DatabaseException).
Czy dopiero w widoku?

coś w tym stylu:

//metoda uruchamiana w action listenerze
public addPerson(Person p) {
   try {
        controller.addPerson(p);
    catch(DatabaseException ex) {
         //dialog z informacją o błędzie i śladem stosu
     }


}

Tylko nie jestem do końca pewny czy to jest prawidłowe podejście.

Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1