Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Ispisivanje poruke iz exception-a u C#

[es] :: .NET :: .NET Desktop razvoj :: Ispisivanje poruke iz exception-a u C#

[ Pregleda: 2542 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Jordan90
student

Član broj: 294595
Poruke: 52
*.dynamic.sbb.rs.



Profil

icon Ispisivanje poruke iz exception-a u C#19.12.2012. u 10:34 - pre 137 meseci
Imam problem sa exceptionima , tj sa hvatanjem istih. Naime,radim softver sa unosom osoba u bazu,i imam klasu Osoba koja ima neke svoje atribute i imam metodu validacija koja vrsi validaciju prilikom unosa podataka u textbox.

string imeNosioca;
string prezimeNosioca;
string uplataDo;
private void validacijaImena(string ime)
{
if(ime == string.Empty)

throw new Exception("Morate uneti ime nosioca !");

}

private void validacijaPrezimena(string prezime)
{
if(prezime == string.Empty)
throw new Exception("Morate uneti prezime nosioca");
}


private void validacijaUplate(string uplata)
{
int datumUplate = Convert.ToInt32(uplata);
if(DateTime.Now.Year > datumUplate)
throw new Exception("Datum vazenja uplate ne sme biti manji od tekuceg datuma !");
}

public void Validiraj()
{
validacijaImena(imeNosioca);
validacijaPrezimena(prezimeNosioca);
validacijaUplate(uplataDo);
}


Ono sto me sad interesuje jeste kako da u glavnoj formi,kada radim unos preko textboxova da hvatam ove exceptione i ispisujem poruke koje su vec gore navedene? U javi je to recimo

try
{
//neki kod
}
catch(Exception ex)
{
MessageBox(ex.getMessage());
}

Kako je to u C#?
Molim vas pomoc......

Hvala



 
Odgovor na temu

Dusan Kondic
Programer
ZR "Parametar" Ljubovija
Ljubovija

Član broj: 49961
Poruke: 225
*.adsl-a-12.sezampro.rs.

Sajt: www.drinacoding.com


+14 Profil

icon Re: Ispisivanje poruke iz exception-a u C#19.12.2012. u 11:14 - pre 137 meseci
Postoji jako mnogo rešenja a sve zavisi od toga kakav ishod (greška) se očekuje.
U narednom primeru nije potreban ni try/catch ni throw ali lako mogu da se uvedu.
Code:


        string imeNosioca;
        string prezimeNosioca;
        string uplataDo;
        private Exception validacijaImena(string ime)
        {
            Exception ex = new Exception("");
            if (ime == string.Empty) ex = new Exception("Morate uneti ime nosioca! ");
            return ex;
        }
        private Exception validacijaPrezimena(string prezime)
        {
            Exception ex = new Exception("");
            if (prezime == string.Empty) ex = new Exception("Morate uneti prezime nosioca. ");
            return ex;
        }
        private Exception validacijaUplate(string uplata)
        {
            Exception ex = new Exception("");
            int datumUplate = Convert.ToInt32(uplata);
            if (DateTime.Now.Year > datumUplate) ex = new Exception("Datum vazenja uplate ne sme biti manji od tekuceg datuma! ");
            return ex;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            string messageText = validacijaImena("Milan").Message;
            messageText += validacijaPrezimena("").Message;
            messageText += validacijaUplate("2010").Message;

            if(messageText != "") MessageBox.Show(messageText);
        }

Nadam se da je ovo pomoglo.
 
Odgovor na temu

Jordan90
student

Član broj: 294595
Poruke: 52
*.dynamic.sbb.rs.



Profil

icon Re: Ispisivanje poruke iz exception-a u C#19.12.2012. u 11:28 - pre 137 meseci
Svidja mi se resenje sad cu da probam da implementiram... A postoji li mogucnost samo da u metodi button_click(object sender,.....)
ja napravim try/catch blok u kome bih hvatao vec definisane exceptione... Mislim da bi mi to dosta smanjilo posao? Trazio sam po netu ali nema odgovora.... Ili ne postoji mogucnost da to sredim na taj nacin?
 
Odgovor na temu

Dusan Kondic
Programer
ZR "Parametar" Ljubovija
Ljubovija

Član broj: 49961
Poruke: 225
*.adsl-a-12.sezampro.rs.

Sajt: www.drinacoding.com


+14 Profil

icon Re: Ispisivanje poruke iz exception-a u C#19.12.2012. u 12:31 - pre 137 meseci
try/catch možeš da staviš npr. kod konverzije u Int32 jer tu možemo da očekujemo prosleđivanje neodgovarajućeg podatka.
U tom slučaju kod može da izgleda ovako:
Code:

        string imeNosioca;
        string prezimeNosioca;
        string uplataDo;
        private Exception validacijaImena(string ime)
        {
            Exception ex = new Exception("");
            if (ime == string.Empty) ex = new Exception("Morate uneti ime nosioca! ");
            return ex;
        }
        private Exception validacijaPrezimena(string prezime)
        {
            Exception ex = new Exception("");
            if (prezime == string.Empty) ex = new Exception("Morate uneti prezime nosioca. ");
            return ex;
        }
        private void validacijaUplate(string uplata)
        {
            int datumUplate = Convert.ToInt32(uplata);
            if (DateTime.Now.Year > datumUplate)
                throw new Exception("Datum vazenja uplate ne sme biti manji od tekuceg datuma! ");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string messageText = validacijaImena("Milan").Message;
            messageText += validacijaPrezimena("").Message;
            try
            {
                validacijaUplate("asdf");
            }
            catch (Exception ex)
            {
                messageText += ex.Message;
            }

            if (messageText != "") MessageBox.Show(messageText);
        }
 
Odgovor na temu

ravni

Član broj: 8894
Poruke: 373



+15 Profil

icon Re: Ispisivanje poruke iz exception-a u C#19.12.2012. u 12:40 - pre 137 meseci
Citat:
Jordan90:... U javi je to recimo

try
{
//neki kod
}
catch(Exception ex)
{
MessageBox(ex.getMessage());
}

Kako je to u C#?

U C# bi to bilo
Code:
try
{
  // neki kod
}
catch(Exception e)
{
  MessageBox.Show(e.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
}
 
Odgovor na temu

Jordan90
student

Član broj: 294595
Poruke: 52
*.dynamic.sbb.rs.



Profil

icon Re: Ispisivanje poruke iz exception-a u C#19.12.2012. u 13:23 - pre 137 meseci
Ok je,ali u message boxu se i dalje ispisuje sistemska poruka o gresci,a ja bih zeleo samo da se isppise neki zadati string ? Interesuje me jel postoji to uopste u .netu?
 
Odgovor na temu

ravni

Član broj: 8894
Poruke: 373



+15 Profil

icon Re: Ispisivanje poruke iz exception-a u C#19.12.2012. u 13:42 - pre 137 meseci
Code (csharp):
MessageBox.Show(e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.dynamic.isp.telekom.rs.



+373 Profil

icon Re: Ispisivanje poruke iz exception-a u C#19.12.2012. u 14:22 - pre 137 meseci
Citat:
Jordan90:
Ok je,ali u message boxu se i dalje ispisuje sistemska poruka o gresci,a ja bih zeleo samo da se isppise neki zadati string ? Interesuje me jel postoji to uopste u .netu?

Naravno da postoji, cak si i sam napisao
Code (csharp):

throw new Exception("Datum vazenja uplate ne sme biti manji od tekuceg datuma !");

Posle da bi je prikazao koristis:
Code (csharp):

catch(Exception ex)
{
      MessageBox.Show(ex.Message);
}
 
 
Odgovor na temu

Dejan Carić
Oslo, Norway

Član broj: 230976
Poruke: 232
*.dynamic.sbb.rs.

Sajt: www.dcaric.com


+26 Profil

icon Re: Ispisivanje poruke iz exception-a u C#21.12.2012. u 09:34 - pre 137 meseci
@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.
 
Odgovor na temu

wex-alpha
Sarajevo

Član broj: 7580
Poruke: 845
*.dynamic.telemach.ba.



+13 Profil

icon Re: Ispisivanje poruke iz exception-a u C#23.12.2012. u 17:20 - pre 137 meseci
try/catch koristi kada si iscrpio sve mogucnosti.
Reicmo imas konverziju iz int32 u string... mozes to rijesiti sa try/catch, ali imas mnogo bolje rjesenje, tako da ti try/catch u tom slucaju i ne treba...


Pogledaj:
Int32.TryParse Method (String, Int32%)


 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: Ispisivanje poruke iz exception-a u C#

[ Pregleda: 2542 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.