Back to blog
Fouten afhandelen: try, catch en finally
Beginner

Fouten afhandelen: try, catch en finally

David De Lombaerde David De Lombaerde · juli 10, 2026 · 7 min read

Waarom foutafhandeling?

Zelfs perfect geschreven code kan fouten tegenkomen: een bestand dat niet bestaat, een netwerk dat uitvalt, een getal dat gedeeld wordt door nul. Als je die fouten negeert, crasht je programma. Met try/catch vang je ze op en handel je ze netjes af.

Basis: try en catch

try
{
    string tekst = File.ReadAllText("tekening.txt");
    Console.WriteLine(tekst);
}
catch (FileNotFoundException ex)
{
    Console.WriteLine($"Bestand niet gevonden: {ex.Message}");
}
catch (UnauthorizedAccessException ex)
{
    Console.WriteLine($"Geen leesrechten: {ex.Message}");
}

C# loopt de catch-blokken van boven naar beneden af en voert het eerste uit dat overeenkomt met het fouttype.

finally: altijd uitgevoerd

Code in finally wordt altijd uitgevoerd — of er nu een fout was of niet. Gebruik het om resources vrij te geven:

StreamReader? lezer = null;
try
{
    lezer = new StreamReader("data.csv");
    Console.WriteLine(lezer.ReadToEnd());
}
catch (Exception ex)
{
    Console.WriteLine($"Fout: {ex.Message}");
}
finally
{
    lezer?.Close();  // wordt altijd uitgevoerd
}

using: resources automatisch vrijgeven

Voor objecten die IDisposable implementeren (bestanden, verbindingen, ...) is using de eenvoudigste manier:

try
{
    using StreamReader lezer = new StreamReader("data.csv");
    Console.WriteLine(lezer.ReadToEnd());
    // lezer wordt automatisch gesloten aan het einde van het using-blok
}
catch (FileNotFoundException)
{
    Console.WriteLine("Bestand niet gevonden.");
}

Een fout gooien (throw)

void SetLayerName(string naam)
{
    if (string.IsNullOrWhiteSpace(naam))
        throw new ArgumentException("Laagnaam mag niet leeg zijn.", nameof(naam));

    // ...
}

Algemene Exception opvangen

Als je niet weet welk type fout er kan optreden, gebruik dan de basisklasse Exception. Zet dit altijd als laatste catch:

catch (FileNotFoundException ex)
{
    // specifiek geval
}
catch (Exception ex)
{
    // alles wat niet hierboven valt
    Console.WriteLine($"Onverwachte fout: {ex.Message}");
}

Best practices

In de volgende post leren we namespaces en hoe je een class library aanmaakt — de basis voor een AutoCAD add-in.

Share this article

LinkedIn WhatsApp X

Comments

No comments yet — be the first!

Leave a comment

Sign in to skip moderation — anonymous comments are reviewed before appearing.