Izuzeci nastaju usled neobičnih ali predviđenih problema u radu programa. Najčešći problemi u radu programa su: pogrešno uneti podaci korisnika, deljenje nulom, modem izgubio vezu, greška prilikom pristupa bazi podataka...

Izbor programera je sledeći:

  • da ne programira ništa. U tom slučaju program će prestati sa radom.

  • programiranje pojave obaveštenja bez ispravke greške. U tom slučaju samo se korisnik obaveštava o pojavi greške ali će program prestati sa radom.

  • programiranje pojave obaveštenja i pokušaj ispravke greške. U tom slučaju program ima mogućnost da nastavi sa radom.

  • programiranje korektivnih akcija bez obaveštenja. U tom slučaju korisnik se ne obaveštava šta se desilo, ispravlja se greška i program nastavlja sa radom.

Izuzetak je objekat prosleđen iz dela programa u kome se problem desio u deo programa koji će pokušati da reši problem.

Deo programa gde može da se desi izuzetak označava se blokom try.
Deo programa koji pokušava da reši problem piše se u bloku catch. U ovom bloku se vrši obrada izuzetaka.
Generisanje određenog izuzetka je moguće izvršiti naredbom throw. Ovom naredbom se generišu posebni programski kontrolisani i predviđeni izuzeci.
Blok finally je poslednji u nizu i on se uvek izvršava.

Kad se izuzetak javi kreira se objekat klase Exception.

Blokovima try/catch se mogu predvideti i obuhvatiti samo oni izuzeci koje ste predvideli da će se javiti u programu. Ako se desi neki izuzetak koji niste predvideli onda je potrebno uraditi akcije koje će oporaviti program i osloboditi resurse.

Primer:

static void Main()
{
    int a, b;
    double c;
    Console.WriteLine("Unesi prvi broj:");
    a = Int32.Parse(Console.ReadLine());
    Console.WriteLine("Unesi drugi broj:");
    b = Int32.Parse(Console.ReadLine());
 
    try
    {
        c = a / b;
        Console.WriteLine("c={0}", c);
    }
    catch (Exception izuzetak)
    {
        Console.WriteLine("Doslo je do greske!");
        Console.WriteLine(izuzetak.ToString());
    }
}

Primer:

static void Main()
{
    double op1, op2, rez = 0;
    char @operator;
 
    try
    {
        Console.WriteLine("Unesi prvi broj:");
        op1 = Double.Parse(Console.ReadLine());
        Console.WriteLine("Unesi operator:");
        @operator = Char.Parse(Console.ReadLine());
        Console.WriteLine("Unesi drugi broj:");
        op2 = Double.Parse(Console.ReadLine());
 
        if (@operator != '+' && @operator != '-' && @operator != '*' && @operator != '/')
            throw new Exception(@operator.ToString());
 
        switch (@operator)
        {
            case '+':
                rez = op1 + op2;
                break;
            case '-':
                rez = op1 - op2;
                break;
            case '*':
                rez = op1 * op2;
                break;
            case '/':
                rez = op1 / op2;
                break;
            default:
                Console.WriteLine("Pogresan operator");
                break;
        }
        Console.WriteLine("{0}{1}{2}={3}", op1, @operator, op2, rez);
    }
    catch (Exception izuzetak)
    {
        Console.WriteLine(izuzetak.ToString());
    }
}


Last modified: Monday, 14 December 2020, 1:47 PM