Прилагођени изузеци¶
Како би што боље прилагодио систем за обраду изузетака својим потребама, можеш
да креираш своје прилагођене изузетке наслеђивањем из Exception класе и
након тога користиш throw да их бацаш.
Нека је задатак да креираш изузетак MissingUserInputException који треба да
се баци када корисник не унесе број година ученика или унесе празнину
(space) у примеру из претходних лекција. Класа MissingUserInputException и
главни програм могу да изгледају овако:
using System;
class MissingUserInputException : Exception
{
public MissingUserInputException(string poruka) : base(poruka) { }
}
class Program
{
static void Main()
{
Console.Write("Koliko imas godina (ceo broj): ");
try
{
string num = Console.ReadLine();
if (string.IsNullOrWhiteSpace(num))
{
throw new MissingUserInputException("Moras uneti broj godina!");
}
else
{
int god = int.Parse(num);
Console.WriteLine("Ti imas " + god + " godina.");
}
}
catch (FormatException e)
{
Console.WriteLine("Niste uneli ceo broj u ispravnom formatu!");
Console.WriteLine("Primer ispravnog formata celog broja je: 17");
Console.WriteLine("Detalji greske: " + e);
}
catch (OverflowException e)
{
Console.WriteLine("Ceo broj mora biti u opsegu od -2147483648 do 2147483647.");
Console.WriteLine("Primer celog broja u dozvoljenim granicama je: 17");
Console.WriteLine("Detalji greske: " + e);
}
catch (Exception e)
{
Console.WriteLine("Desila se nepredvidjena greska.");
Console.WriteLine("Detalji greske: " + e);
}
}
}
Када корисник не унесе број година ученика или унесе празнину, извршавање програма у конзоли изгледаће овако:
Koliko imas godina (ceo broj):
Desila se nepredvidjena greska.
Detalji greske: MissingUserInputException: Moras uneti broj godina!
at Program.Main() in C:\ConsoleApp\Program.cs:line 18