Obsłużyć czy nie obsługiwać wyjątku?

Odpowiedz Nowy wątek
2015-02-02 21:47
0

Witam, pytanie czysto teoretyczne. Jakie rozwiązanie będzie lepsze:

  1. posiadam bazę danych z tabelą Lekarze { imie, nazwisko, email } , która nie ma nałożonego ograniczenia typu UNIQE dla pola unikalnego, w aplikacji natomiast zaimplementowałem funkcje sprawdzającą czy dany lekarz istnieje na podstawie adresu email.
  2. posiadam tabelą Lekarze z ograniczeniem UNIQE dla pola email, nie tworzę funkcji, natomiast obsługuję wyjątek w przypadku dodania rekordu z takim samym emailem.

Pozdrawiam.

Pozostało 580 znaków

2015-02-02 23:29
1

Oba równocześnie,

  1. Unique na tabeli/wartościach, które nie mają wielu insertów/sekundę na pewno nie zaszkodzi,
  2. A warstwa dostępu do bazy w alplikacji nie powinna wstawiać dublowanych rekordów i czekać na wyjątek (rzucanie wyjątków jest kosztowne sprzętowo i mało eleganckie w kodzie).

Wiadomo nie zawsze wszystko da się obsłużyć bez try/catch/finally ale Exception Driven Development to nie jest dobra droga.

Pozostało 580 znaków

2015-02-03 08:59
ne0
2

Ale dlaczego wyjątki??
Przecież jeżeli sprawdzasz czy podany email już istnieje to jest to normalny if... przykładowo:

var emailFound = userDatabase.users.first(x => x.email == podanyEmail);
if(emailFound == null) // albo if(string.IsNullOrEmpty(emailFound))
{
//zwróć formularza z informacją o podanie innego adresu
}

Żaden wyjątek tylko standardowa operacja.


Pomogłem? To dobrze :)
Akurat tutaj poleci wyjątek. Zamiast .First() użyj .FirstOrDefault(), a jeszcze lepiej .Any(). - ŁF 2015-02-03 18:36
masz racje, lepsze jest firstOrDefault a co do Any to chyba lepiej tylko wydajnościowo, chociaż chciałem mu tylko zobrazować o co chodzi :) - ne0 2015-02-03 18:47
To nie jest lepiej "tylko wydajnościowo", to najbardziej optymalne rozwiązanie problemu - chyba, że dane użytkownika będą potrzebne do czegoś więcej, niż tylko sprawdzenia != null. - ŁF 2015-02-03 21:03

Pozostało 580 znaków

2015-02-03 10:24
0

Dziękuję wam za
pomoc ;)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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