Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Foutafhandeling | Datastructuren & Bestandsafhandeling
C# Verder dan de Basis

bookFoutafhandeling

Mogelijk bent u de term runtime error al eerder tegengekomen in voorgaande hoofdstukken. Een runtime error is een fout die optreedt tijdens het uitvoeren van het programma – vandaar de naam "runtime"-fout.

Gewoonlijk crasht het programma of reageert het niet meer wanneer een runtime error optreedt.

De compiler kan u helpen door de meeste fouten in de code aan te wijzen, maar runtime errors zijn meestal onvoorspelbaar en hangen vaak af van onzekere parameters.

Als bijvoorbeeld het bestandspad dat aan StreamReader wordt doorgegeven ongeldig is of niet bestaat, zal dit een runtime error veroorzaken en zal het programma crashen. Daarom plaatsen we dergelijke risicovolle code vaak in try-catch-blokken om bepaalde code te proberen en, als dit mislukt, de fout te opvangen en af te handelen in plaats van het programma te laten crashen.

Hieronder volgt de syntaxis van het try-catch-blok:

index.cs

index.cs

copy
1234567
try { // code to try } catch (Exception errorVar) { // code to handle error }

Hier is Exception een keyword dat het datatype Exception vertegenwoordigt.

Voorbeeld

index.cs

index.cs

copy
1234567891011121314151617
using System; using System.IO; class Program { static void Main(string[] args) { try { new StreamWriter("C:/a/random/path/that/does/not/exist.txt"); } catch(Exception error) { Console.WriteLine(error.Message); } } }
Note
Opmerking

We kunnen het gedeelte (Exception error) uit de catch-instructie weglaten als we error niet gebruiken.

Hieronder volgen enkele veelvoorkomende situaties waarin een runtime-fout kan optreden:

Delen door nul

index.cs

index.cs

copy
123456789101112131415161718
using System; class Program { static void Main(string[] args) { try { int a = 100; int b = 0; int result = a / b; } catch { Console.WriteLine("ERROR: Division by Zero."); } } }

Ongeldige index van een array of lijst

index.cs

index.cs

copy
1234567891011121314151617
using System; class Program { static void Main(string[] args) { try { var exampleArray = new int[10]; Console.WriteLine(exampleArray[20]); } catch { Console.WriteLine("ERROR: The array index is out of bounds."); } } }

Sleutel niet gevonden (voor Dictionaries):

index.cs

index.cs

copy
123456789101112131415161718192021
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { try { Dictionary<string, string> myDict = new Dictionary<string, string> { { "key1", "value1" } }; Console.WriteLine(myDict["key2"]); } catch { Console.WriteLine("Error: Key not found"); } } }

De finally-blok

Er is ook een optioneel codeblok genaamd finally dat wordt uitgevoerd nadat het catch-blok is uitgevoerd:

index.cs

index.cs

copy
12345678910111213141516171819202122232425
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { try { Dictionary<string, string> myDict = new Dictionary<string, string> { { "key1", "value1" } }; Console.WriteLine(myDict["key2"]); } catch { Console.WriteLine("Error: Key not found"); } finally { Console.WriteLine("This line will show after the error"); } } }

1. Wat zal de uitvoer zijn van het volgende programma?

2. Wat is het doel van het finally-blok in C#?

3. Welke van de volgende beweringen is waar met betrekking tot het try-catch-blok in C#?

question mark

Wat zal de uitvoer zijn van het volgende programma?

Select the correct answer

question mark

Wat is het doel van het finally-blok in C#?

Select the correct answer

question mark

Welke van de volgende beweringen is waar met betrekking tot het try-catch-blok in C#?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 9

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Suggested prompts:

Can you explain how the try-catch block works with an example?

What are some best practices for handling runtime errors?

Can you list other common runtime errors besides the ones mentioned?

Awesome!

Completion rate improved to 2.04

bookFoutafhandeling

Veeg om het menu te tonen

Mogelijk bent u de term runtime error al eerder tegengekomen in voorgaande hoofdstukken. Een runtime error is een fout die optreedt tijdens het uitvoeren van het programma – vandaar de naam "runtime"-fout.

Gewoonlijk crasht het programma of reageert het niet meer wanneer een runtime error optreedt.

De compiler kan u helpen door de meeste fouten in de code aan te wijzen, maar runtime errors zijn meestal onvoorspelbaar en hangen vaak af van onzekere parameters.

Als bijvoorbeeld het bestandspad dat aan StreamReader wordt doorgegeven ongeldig is of niet bestaat, zal dit een runtime error veroorzaken en zal het programma crashen. Daarom plaatsen we dergelijke risicovolle code vaak in try-catch-blokken om bepaalde code te proberen en, als dit mislukt, de fout te opvangen en af te handelen in plaats van het programma te laten crashen.

Hieronder volgt de syntaxis van het try-catch-blok:

index.cs

index.cs

copy
1234567
try { // code to try } catch (Exception errorVar) { // code to handle error }

Hier is Exception een keyword dat het datatype Exception vertegenwoordigt.

Voorbeeld

index.cs

index.cs

copy
1234567891011121314151617
using System; using System.IO; class Program { static void Main(string[] args) { try { new StreamWriter("C:/a/random/path/that/does/not/exist.txt"); } catch(Exception error) { Console.WriteLine(error.Message); } } }
Note
Opmerking

We kunnen het gedeelte (Exception error) uit de catch-instructie weglaten als we error niet gebruiken.

Hieronder volgen enkele veelvoorkomende situaties waarin een runtime-fout kan optreden:

Delen door nul

index.cs

index.cs

copy
123456789101112131415161718
using System; class Program { static void Main(string[] args) { try { int a = 100; int b = 0; int result = a / b; } catch { Console.WriteLine("ERROR: Division by Zero."); } } }

Ongeldige index van een array of lijst

index.cs

index.cs

copy
1234567891011121314151617
using System; class Program { static void Main(string[] args) { try { var exampleArray = new int[10]; Console.WriteLine(exampleArray[20]); } catch { Console.WriteLine("ERROR: The array index is out of bounds."); } } }

Sleutel niet gevonden (voor Dictionaries):

index.cs

index.cs

copy
123456789101112131415161718192021
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { try { Dictionary<string, string> myDict = new Dictionary<string, string> { { "key1", "value1" } }; Console.WriteLine(myDict["key2"]); } catch { Console.WriteLine("Error: Key not found"); } } }

De finally-blok

Er is ook een optioneel codeblok genaamd finally dat wordt uitgevoerd nadat het catch-blok is uitgevoerd:

index.cs

index.cs

copy
12345678910111213141516171819202122232425
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { try { Dictionary<string, string> myDict = new Dictionary<string, string> { { "key1", "value1" } }; Console.WriteLine(myDict["key2"]); } catch { Console.WriteLine("Error: Key not found"); } finally { Console.WriteLine("This line will show after the error"); } } }

1. Wat zal de uitvoer zijn van het volgende programma?

2. Wat is het doel van het finally-blok in C#?

3. Welke van de volgende beweringen is waar met betrekking tot het try-catch-blok in C#?

question mark

Wat zal de uitvoer zijn van het volgende programma?

Select the correct answer

question mark

Wat is het doel van het finally-blok in C#?

Select the correct answer

question mark

Welke van de volgende beweringen is waar met betrekking tot het try-catch-blok in C#?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 9
some-alt