Meer informatie over exceptions

Oefening 1

Schrijf een C#-programma waarin de gebruiker zijn/haar leeftijd invoert. Als de ingevoerde leeftijd negatief is, gooi dan een ArgumentOutOfRangeException met een passende foutmelding.

Specificaties

  • Vraag de gebruiker om een leeftijd in te voeren.
  • Controleer of de leeftijd negatief is.
  • Gooi een exception als de leeftijd negatief is.

Verwachte output

Als de leeftijd 0 of hoger is, dan komt in de console: Je leeftijd is: Als de leeftijd lager dan 0 is, dan komt in de console: Fout: <Error message>

Nu jij

using System;
 
class Program
{
    static void Main()
    {
        Console.Write("Voer je leeftijd in: ");
        int leeftijd = int.Parse(Console.ReadLine()); //lokaal uitvoeren
 
        try
        {
            if (leeftijd < 0)
            {
                // Gooi exception 
            }
            else
            {
                Console.WriteLine("Je leeftijd is: " + leeftijd);
            }
        }
        catch (ArgumentOutOfRangeException ex)
        {
            Console.WriteLine("Fout: " + ex.Message);
        }
    }
}
 

Oefening 2

Schrijf een C#-programma waarin de gebruiker een temperatuur invoert. Als de temperatuur boven 50 graden is, gooi dan een ArgumentOutOfRangeException met een passende foutmelding.

Specificaties

  • Vraag de gebruiker om een temperatuur in te voeren.
  • Controleer of de temperatuur niet hoger is dan 50 graden.
  • Gooi een exception als temperatuur hoger dan 50 graden is.

Verwachte output

Als de temperatuur 50 graden of lager is, dan komt in de console: De ingevoerde temperatuur is: <temperatuur> Als de temperatuur hoger dan 50 graden is, dan komt in de console: Fout: <Error message>

Nu jij

using System;
 
class Program
{
    static void Main()
    {
        Console.Write("Voer de temperatuur in graden Celsius in: ");
        int temperatuur = int.Parse(Console.ReadLine());
 
        try
        {
            if (temperatuur > 50)
            {
                // Gooi exception
            }
            else
            {
                Console.WriteLine("De ingevoerde temperatuur is: " + temperatuur + " graden.");
            }
        }
        catch (ArgumentOutOfRangeException ex)
        {
            Console.WriteLine("Fout: " + ex.Message);
        }
    }
}

Oefening 3

Schrijf een C#-programma waarin de gebruiker twee getallen invoert en deze met elkaar deelt. Gebruik een try-catch-blok om een mogelijke fout (deling door nul) af te handelen.

Specificaties

  • Vraag de gebruiker om een getal in te voeren.
  • Vraag de gebruiker nogmaals om een getal in te voeren.
  • Controleer of het tweede getal negatief is.
  • Gooi een exception als het een deling door nul is.

Verwachte output

Als de deling niet door 0 is, dan komt in de console: Het resultaat van de deling is: <resultaat> Als de deling door 0 is, dan komt in de console: Fout: <Error message>

Nu jij

using System;
 
class Program
{
    static void Main()
    {
		Console.Write("Voer het eerste getal in: ");
		int getal1 = int.Parse(Console.ReadLine());
 
		Console.Write("Voer het tweede getal in: ");
		int getal2 = int.Parse(Console.ReadLine());
 
		int resultaat = getal1 / getal2;
		Console.WriteLine("Het resultaat van de deling is: " + resultaat);
	     
    }
}

Tip

Maak twee catch blokken. Eén voor DivideByZeroException en één voor een FormatException (als er geen getal is ingevoerd maar bijvoorbeeld een tekst).


Oefening 4

Schrijf een C#-programma waarin de gebruiker een bestandspad invoert en probeert dat bestand te openen. Gebruik een try-catch-blok om een fout af te handelen als het bestand niet gevonden wordt (bijvoorbeeld een FileNotFoundException).

Specificaties

  • Vraag de gebruiker om een pad naar een bestand in te voeren.
  • Lees het bestand op het gegeven pad.
  • Vang de exception op als het bestand niet bestaat.

Verwachte output

Als het bestand bestaat, dan komt in de console: Bestand succesvol geopend. Inhoud: <inhoud bestand> Als het bestand niet bestaat, dan komt in de console: Het bestand is niet gevonden. Fout: <Error message> Als de gebruiker geen recht heeft het bestand te openen, dan komt in de console: Fout: Je hebt geen toestemming om dit bestand te openen. Als een andere error optreedt: Er is een onverwachte fout opgetreden: <Error message>

Nu jij

using System;
using System.IO;
 
class Program
{
    static void Main()
    {
        Console.Write("Voer het bestandspad in: ");
        string bestandspad = Console.ReadLine();
 
        try
        {
            // Probeer het bestand te openen
            string inhoud = File.ReadAllText(bestandspad); //werkt niet online, lokaal uitproberen.
            Console.WriteLine("Bestand succesvol geopend. Inhoud:");
            Console.WriteLine(inhoud);
        }
        //catch (FileNotFoundException)
        catch (UnauthorizedAccessException)
        {
            Console.WriteLine("Fout: Je hebt geen toestemming om dit bestand te openen.");
        }
        catch (Exception ex)
        {
            Console.WriteLine("Er is een onverwachte fout opgetreden: " + ex.Message);
        }
    }
}

Oefening 5

Schrijf een C#-programma waarin de gebruiker een bestandspad invoert, het bestand wordt geopend, en de inhoud van het bestand wordt gelezen. Gebruik een finally-blok om het bestand altijd te sluiten, ongeacht of er een uitzondering is opgetreden.

Specificaties

  • Vraag de gebruiker om een bestandspand in te voeren.
  • Open het bestand op de gegeven locatie.
  • Zorg ervoor dat het bestand altijd wordt gesloten.

Verwachte output

Na alle mogelijke situatie wordt het bestand tenslotte gesloten, dan komt in de console: Het bestand is gesloten.

Nu jij

using System;
using System.IO;
 
class Program
{
    static void Main()
    {
        StreamReader bestand = null;
 
        try
        {
            Console.Write("Voer het bestandspad in: ");
            string bestandspad = Console.ReadLine();
 
            // Probeer het bestand te openen
            bestand = new StreamReader(bestandspad);
            string inhoud = bestand.ReadToEnd();
 
            Console.WriteLine("Bestand succesvol geopend. Inhoud:");
            Console.WriteLine(inhoud);
        }
        catch (FileNotFoundException)
        {
            Console.WriteLine("Fout: Het opgegeven bestand werd niet gevonden.");
        }
        catch (UnauthorizedAccessException)
        {
            Console.WriteLine("Fout: Je hebt geen toestemming om dit bestand te openen.");
        }
        catch (Exception ex)
        {
            Console.WriteLine("Er is een onverwachte fout opgetreden: " + ex.Message);
	}
 
		// finally
		// Zorg ervoor dat het bestand altijd wordt gesloten
		// Code voor het finally block
		//if (bestand != null)
		//{
		//    bestand.Close();
		//    Console.WriteLine("Het bestand is gesloten.");
		//}
        
    }
}