[ Slavica989 @ 15.04.2012. 23:04 ] @
Molim vas recite mi sa se ispisuje na ekranu i objasnite mi korak po korak kako radi kod ...
Code (csharp):

try
{
string naziv = "FON";
try
{
int broj = Convert.ToInt32(naziv);
Console.Write(7);
}
catch (DivideByZeroException)
{
Console.Write(6);
}
catch (Exception)
{
Console.Write(5);
}
finally
{
Console.Write(4);
}
Console.Write(3);
}
catch (FormatException)
{
Console.Write(2);
}
finally
{
Console.Write(1);
}
 


[Ovu poruku je menjao Aleksandar Ružičić dana 17.04.2012. u 23:51 GMT+1]
[ Dejan Carić @ 18.04.2012. 09:20 ] @
Ispisuje se 5 4 3 1 :)

Linija 6 baca Format Exception: int broj = Convert.ToInt32(naziv);
Ne izvršava se linija 7 zbog pomenute greške: Console.Write(7);
Nego se ide na neki od unutrašnjih catch blokova.
Linija 9 se preskače pošto greška nije tog tipa: catch (DivideByZeroException)
Linija 13 se izvršava jer catch (Exception) hvata sve greške
Finally blok na liniji 17 se uvek izvršava bez obzira da li je prethodno bačena greška ili ne: finally { Console.Write(4); }
Kod se normalno izvršava na liniji 21 jer je greška već obrađena u unutrašnjem try/catch bloku: Console.Write(3);
Linija 23 se neće izvršiti jer je greška već obrađena u unutrašnjem try/catch bloku: catch (FormatException) { Console.Write(2); }
Poslednji finally blok se uvek izvršava bez obzira da li je bilo greške ili ne: finally { Console.Write(1); }

Jasnije?