arrow-left

All pages
gitbookPowered by GitBook
1 of 1

Loading...

Zelf uitzonderingen maken

circle-check

Kennisclip voor deze inhoudarrow-up-right

hashtag
Zelf exceptions opwerpen

Je kan ook in je eigen code uitzonderingen genereren, zodat deze elders opgevangen worden. Je kan hierbij zelf exceptions maken of gewoon gebruik maken van een bestaande Exception-klasse.

Een voorbeeld:

"Getal is 0. Dit is niet voorzien." is dus de boodschap die we toevoegen aan onze exception. Ze wordt "opgelost" door de boodschap gewoon te tonen. In een complexer programma zou je bijvoorbeeld de waarde van de input kunnen aanpassen en dan opnieuw de methode aanroepen.

hashtag
Een eigen exception ontwerpen

Je kan ook eigen klassen afleiden van Exception zodat je eigen uitzonderingen kan maken en gooien in je programma. Je maakt hiervoor gewoon een nieuwe klasse aan die je laat overerven van de ApplicationException-klasse. Een voorbeeld:

Om deze exception nu zelf op te gooien gebruiken we het keyword throw. In volgende voorbeeld gooien we onze eigen exception op een bepaald punt in de code en vangen deze dan op:

circle-exclamation

Overdrijf niet met eigen Exceptions. Op vind je, onder "Derived", een heleboel kant-en-klare exceptions voor allerlei situaties.

circle-exclamation

Technisch gezien kan je ook rechtstreeks erven van Exception en SystemException, maar in de documentatie staat uitdrukkelijk dat je eigen klassen best afleidt van ApplicationException.

de pagina van SystemExceptionarrow-up-right
static int DoeIets(int getal)
{
    if (getal == 0) {
        // DivideByZeroException is ingebouwd
        throw new DivideByZeroException("Getal is 0. Dit is niet voorzien.");
    }
    else {
        return 100 / getal;
    }
}


static void Main(string[] args)
{
    try
    {
        Console.WriteLine(DoeIets(0));
    }
    catch(DivideByZeroException e)
    {
        Console.WriteLine(e.Message);
    }
}
class MyException: ApplicationException
{
    public override string ToString()
    {
        return "Dit is een voorbeeld.";
    }
}
static void Main(string[] args)
{
    try
    {
        TimsMethod();
    }

    catch (ApplicationException e)
    {
       Console.WriteLine(e.ToString());
    }
}
static public void TimsMethod()
{
    // deze methode doet niets interessants
    // ze gooit gewoon een Exception als voorbeeld
    MyException exp = new MyException();
    throw exp;
}