@Jordan90
Nisam dugo radio desktop programiranje pa ti ne mogu dati konkretan odgovor ali evo par smernica...
Bitno je gde se radi validacija. Na klijentu ili serveru (prezentacioni sloj ili sloj poslovne logike)?
Exception predstavlja alarmantno stanje aplikacije: desilo se nešto što nisi mogao da hendluješ prilikom unosa podata. Na prezentacionom sloju, možeš da pogledaš
IDataErrorInfo i
INotifyPropertyChanged interfejse. Naći ćeš dosta primera na internetu... Nema potrebe za bacanjem
exception-a kada je dovoljno da samo ispišeš poruku da podaci nisu validni.
Kada si uradio validaciju podataka na prezentacionom sloju, onda moraš da uradiš i validaciju podataka na sloju poslovne logike (ili kako je već zoveš). Možda imaš više formi preko kojih možeš da uradiš unos osoba, ali moraš (trebao bi) imati i "centralno" mesto gde se vrši validacija i koje je nezavisno od prezentacionog sloja. Tu je sasvim u redu da baciš
exception jer to predstavlja alarmantno stanje:
navodno je korisnik uneo validne podatke ali pre unosa podataka u bazu si ipak proverio da podaci nisu validni.
Kod bacanja grešaka, gledaj da baciš specifičnu grešku, a ne System.Exception, da bi u
catch bloku po tipu greške mogao da znaš šta se tačno desilo (podaci nisu validni, pukla je konekcija ka bazi, itd.). Isto važi i za hvatanje grešaka. Na
ovom linku možeš pročitati nešto više o tome.
Rešenje koje ti je dao Dušan Kondić u svom prvom postu bi trebao da izbegavaš (no hard feelings :) ) jer za svaku validaciju instancira Exception klasu dva puta, a onda koristi samo Exception.Message. Isti efekat bi se mogao postići i sa sledećim kodom:
Code:
private string validacijaImena(string ime)
{
return string.IsNullOrWhiteSpace(ime) ? "Morate uneti ime" : string.Empty;
}
...
private void button1_Click(object sender, EventArgs e)
{
string messageText = validacijaImena("Milan");
...
}
Potraži na internetu, verovatno ima dobrih i besplatnih framework-a za klijent i server validaciju. Ja sam pre tri godine za razvoj desktop aplikacija koristio
CSLA. Ne znam kako je danas pozicioniran.