[ Valerij Zajcev @ 01.07.2007. 22:01 ] @
c#...

Code:
int x = int.Parse(box.Text);
            int r = x;
            box1.Text = r.ToString();


kada unesem broj u box onda on taj broj prepise u drugi box1, ali kada unesem neki string izbaci mi exception error, kako se uopste koriste tostring i parse???
[ Function @ 01.07.2007. 22:11 ] @
Izbaci zato što funkcija Parse traži da je u karakterima broj da bi ga mogla pretvoriti u int.
Ako želiš zaobići exception, koristi TryParse
[ Valerij Zajcev @ 01.07.2007. 22:36 ] @
Citat:
Izbaci zato što funkcija Parse traži da je u karakterima broj da bi ga mogla pretvoriti u int.
Ako želiš zaobići exception, koristi TryParse


aha, znaci hoces da kazes da ovako ne moze da koristi string vec samo int, a da mi ne bi izbacivao gresku "moram" da koristim taj try, do koga inace jos nisam stigao?
[ Pharos @ 01.07.2007. 23:23 ] @
Evo par primera.
1. Klasika sa try-catch blokom
Code:

try
{
    int x = int.Parse(box.Text);
    box1.Text = x.ToString();
}
catch (FormatException ex)
{
    box1.Text = "Greska";
}


2. Primena TryParse. "Nedostatak" je ako vrednost u box nije u pravilnom formatu, vrednost u box2 će biti nula
Code:

int x;
int.TryParse(box.Text, out x);
box1.Text = x.ToString();


3. Opet TryParse samo što ovog puta ako iz nekog razloga moraš setovati onaj int x na 0, ipak možeš ispisati poruku o grešci u box2.
Code:

int x;
   if (!int.TryParse(box.Text, out x))
      box1.Text = "Greska";
      else
         box1.Text = x.ToString();


U praksi ćeš koristiti sva tri primera, a koji konkretno, to će zavisiti od situacije.
[ Valerij Zajcev @ 03.07.2007. 21:16 ] @
Code:
try
            {
                double kursEvra = 81, sumaDinara = double.Parse(box.Text), sumaEvra;
                if (sumaDinara > 4000000)
                    throw new ArgumentOutOfRangeException();
                sumaEvra = promeniDinare(sumaDinara, kursEvra);
                lbl.Text = sumaEvra.ToString();
            }
            catch (FormatException poruka)
            {
                box.Text = poruka.Message;
                //MessageBox.Show("zadati karakteri nisu brojevi");
            }
            catch (ArgumentOutOfRangeException are)
            {
                lbl.Text = "ne mozete promeniti vise od 4000000 dinara";
            }
        }


Hvala pharos, velika pomoc. Polako se usetavam sa ovim pa imam neka pitanja:
1) ArgumentOutOfRangeException() - nece da se kompajlira bez zagrada, ovako radi lepo ali sta moze da se nadje izmedju zagrada?
2) Da li kada god napravim exception moram da napravim i catch?
3) Exceptioni su klase, da li to znaci da mogu i sam da ih isprogramiram a ne uvek da koristim .NET?
4) Ispravite me ako gresim, exceptioni se koriste uvek kada program treba da izbaci onu ruznu poruku ili da se srusi?
[ Pharos @ 03.07.2007. 21:29 ] @
1. To ti je neka klasa pa za nju moraš da pišeš zagradice, a u zagradicama možeš ništa, a možeš i nešto.
Recimo možeš
Code:

if (x > 5) throw new ArgumentException("Hehehe");

A da u catch bloku napišeš
Code:

catch (ArgumentException ae)
{
   MessageBox.Show(ae.Message);
}

Pa vidi šta se dešava i zašto je korisno.

2. Ne moraš, ali ako dođe do exception-a onda puca program, a ti to ne želiš...
Tako da piši catch svuda gde misliš da može doći do greške.

3. Možeš i svoje naravno. Ali malo se potrudi pa proguglaj kako se prave.

4. Koristi try/catch blok na svakom mestu gde može doći do pucanja tvog programa.