2013-01-11 9 views

Odpowiedz

5

Można się spierać, czy w ogóle potrzebny jest wyjątek; dlaczego nie zwrócić pustej kolekcji lub zerowej?

Rodzaj wyjątku, którego należy użyć, zależy od sposobu korzystania z wyjątków w aplikacji.

Pierwszą rzeczą, którą można rozważyć, jest to, czy jest to błąd funkcjonalny (czy użytkownik powinien coś poprawić), czy błąd techniczny (czy deweloperzy popełnili błąd).

Inną rzeczą, którą należy wziąć pod uwagę, jest to, co jest naturalne dla osoby dzwoniącej z tej metody.

+0

+1 dla 'null' zamiast wyjątku – Habib

+0

Dlaczego wyrzucić wyjątek? Cóż, dzieje się tak dlatego, że z punktu widzenia logiki biznesowej ten rekord powinien istnieć, ponieważ reprezentuje wartość DEFAULT dla konkretnego przypadku. Więc jeśli nie istnieje, metoda (po stronie serwera) nie może kontynuować - nawet jeśli żądanie (które pochodzi z usługi WCF). – pencilCake

+0

Z punktu widzenia biznesu nigdy nie potrzebujesz wyjątku. Z Twojego opisu wynika, że ​​nie powinien się pojawić błąd techniczny. W takim przypadku możesz wybrać dowolną nazwę, która ma znaczenie dla dzwoniącego. Nawiasem mówiąc, nie wystawiaj wyjątku z WCF, ale zamiast tego błędu SOAP. –

0

Nie wyrzucę wyjątku dla tego rodzaju scenariusza, wystarczy obsłużyć wartość zwracaną null. Nie jest dobrym pomysłem, aby zacząć używać wyjątków do kontrolowania przepływu aplikacji.

Jeśli jednostka powinna być zdecydowanie być tam, wtedy można obsłużyć wartość null w warstwie biznesowej i wygenerować niestandardowy wyjątek domeny, np. EntityNotFoundException, jednak nie umieściłbym tego rodzaju logiki na poziomie repozytorium.

+2

Konieczność sprawdzenia, czy 'nulls' nie prowadzi do przekroczenia czystego kodu, jako metody, która zwraca'. null' jeśli nie zostanie znaleziony, nie wyraża wyraźnie intencji. Może warto rozważyć zwrot 'Maybe ', który _clearly_ wyraża, że ​​** jeden ** lub ** zero ** zwracanego typu, który został zwrócony. – Dib

+0

Null nic ci nie powie, kiedy spróbujesz przetestować tę metodę. –

Powiązane problemy