Foutafhandeling
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
1234567try { // code to try } catch (Exception errorVar) { // code to handle error }
Hier is Exception
een keyword dat het datatype Exception vertegenwoordigt.
Voorbeeld
index.cs
1234567891011121314151617using 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); } } }
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
123456789101112131415161718using 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
1234567891011121314151617using 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
123456789101112131415161718192021using 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
12345678910111213141516171819202122232425using 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#?
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
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
Foutafhandeling
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
1234567try { // code to try } catch (Exception errorVar) { // code to handle error }
Hier is Exception
een keyword dat het datatype Exception vertegenwoordigt.
Voorbeeld
index.cs
1234567891011121314151617using 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); } } }
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
123456789101112131415161718using 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
1234567891011121314151617using 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
123456789101112131415161718192021using 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
12345678910111213141516171819202122232425using 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#?
Bedankt voor je feedback!