dodatak > Sistemski izuzeci
Najčešće korišćeni izuzeci:
ArithmeticException - osnovna klasa izuzetaka. Bacaju ih aritmetički operatori.
DivideByZeroException - baca se pri pokušaju deljenja nulom.
IndexOutOfRangeException - baca se pri pokušaju pristupa nepostojećem elementu niza.
InvalidCastException - baca se pri pokušaju eksplicitne konverzije, konverzija nije moguća.
OutOfMemoryException - baca se pri neuspelom pokušaju alociranja memorije operatorom new.
StackOverflowException - baca se kada stek poziva ima previše poziva metoda koje tek treba kompajlirati.
Primer:
static void Main(string[] args)
{
double op1, op2, rez = 0;
char @operator;
try
{
Console.Write("Unesi prvi broj: ");
op1 = Double.Parse(Console.ReadLine());
Console.Write("Unesi operator: ");
@operator = Char.Parse(Console.ReadLine());
Console.Write("Unesi drugi broj: ");
op2 = Double.Parse(Console.ReadLine());
if (@operator != '+' && @operator != '-' && @operator != '*' && @operator != '/')
throw new Exception("Pogresan operator: " + @operator.ToString());
switch (@operator)
{
case '+':
rez = op1 + op2;
break;
case '-':
rez = op1 - op2;
break;
case '*':
rez = op1 * op2;
break;
case '/':
if (op2 == 0)
throw new DivideByZeroException();
rez = op1 / op2;
break;
}
Console.WriteLine("{0}{1}{2}={3}", op1, @operator, op2, rez);
}
catch (DivideByZeroException ex)
{
Console.WriteLine(ex.Message);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
Klasa System.Exception ima veliki broj svojstava:
Message - predstavlja informacije o izuzetku i samo se može čitati. Vrednost svojstva Message se definiše prilikom bacanja izuzetaka i prosleđuje se kao argument konstruktoru izuzetka.
HelpLink - predstavlja vezu do datoteke za pomoć povezanu sa izuzetkom.
StackTrace - služi samo za čitanje i sadrži informaciju o steku poziva za poruku o grešci.
Source - sadrži ime programa koji je doveo do izuzetka.
TargetSite - sadrži ime metode iz koje je bačen izuzetak.