Uitdaging: Foutafhandeling
De try-catch-syntaxis heeft een extra mogelijkheid waarmee specifieke typen fouten kunnen worden opgevangen en afzonderlijk kunnen worden afgehandeld:
index.cs
1234567891011121314151617try { // code } catch (ExceptionType errorVarName) { // code } catch (ExceptionType errorVarName) { // code } ... finally { // code }
Het type Exception dat in het vorige hoofdstuk is gebruikt, vangt alle soorten fouten op, maar er zijn enkele subtypen van Exception die specifiekere fouten opvangen. Enkele veelvoorkomende exception-typen zijn:
DivideByZeroException: er is sprake van een deling door nul;FileNotFoundException: het bestand dat wordt benaderd bestaat niet;KeyNotFoundException: de sleutel in het woordenboek bestaat niet;IndexOutOfRangeException: de opgegeven index van een array of lijst is ongeldig.
De term errorVarName is een variabele die het Exception-object opslaat en informatie bevat zoals het foutbericht, dat toegankelijk is via errorVarName.Message. Dit kan worden weggelaten als het niet wordt gebruikt:
index.cs
12345678910111213try { // code } catch (ExceptionType) { // code } ... finally { // code }
Hier volgt een voorbeeld van het gebruik van dit type try-catch-blok:
index.cs
123456789101112131415161718192021222324252627using System; class Program { static void Main(string[] args) { int[] myArray = { 0, 2, 4, 6, 8, 10 }; int i = 0; while (true) { try { Console.Write(myArray[i] / i + " "); i++; } catch(DivideByZeroException) { i++; } catch(IndexOutOfRangeException) { break; } } } }
Gebruik nu deze concepten. Vul de lege plekken in met relevante exceptietypen in de onderstaande code om de uitdaging te voltooien.
index.cs
1234567891011121314151617181920212223242526272829303132333435using System; using System.Collections.Generic; class Program { static void Main(string[] args) { int[] numbers = { 1, 2, 5, 7, 9 }; var numberNames = new Dictionary<int, string>(); numberNames.Add(1, "One"); numberNames.Add(2, "Two"); numberNames.Add(5, "Five"); numberNames.Add(9, "Nine"); int i = 0; while (true) { try { int key = numbers[i]; Console.WriteLine($"{key} is {numberNames[key]}"); i++; } catch (___) { break; } catch (___) { numberNames.Add(7, "Seven"); } } } }
Gebruik het relevante exceptietype voor elk catch-blok. Lees de code en bepaal welk catch-blok het meest geschikt is voor het afhandelen van een bepaald type exceptie.
index.cs
1234567891011121314151617181920212223242526272829303132333435using System; using System.Collections.Generic; public class HelloWorld { public static void Main(string[] args) { int[] numbers = { 1, 2, 5, 7, 9 }; var numberNames = new Dictionary<int, string>(); numberNames.Add(1, "One"); numberNames.Add(2, "Two"); numberNames.Add(5, "Five"); numberNames.Add(9, "Nine"); int i = 0; while (true) { try { int key = numbers[i]; Console.WriteLine($"{key} is {numberNames[key]}"); i++; } catch (IndexOutOfRangeException) { break; } catch (KeyNotFoundException) { numberNames.Add(7, "Seven"); } } } }
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
What are the correct exception types to fill in the blanks?
Can you explain why each exception type is used in this context?
Can you give more examples of specific exception types?
Awesome!
Completion rate improved to 2.04
Uitdaging: Foutafhandeling
Veeg om het menu te tonen
De try-catch-syntaxis heeft een extra mogelijkheid waarmee specifieke typen fouten kunnen worden opgevangen en afzonderlijk kunnen worden afgehandeld:
index.cs
1234567891011121314151617try { // code } catch (ExceptionType errorVarName) { // code } catch (ExceptionType errorVarName) { // code } ... finally { // code }
Het type Exception dat in het vorige hoofdstuk is gebruikt, vangt alle soorten fouten op, maar er zijn enkele subtypen van Exception die specifiekere fouten opvangen. Enkele veelvoorkomende exception-typen zijn:
DivideByZeroException: er is sprake van een deling door nul;FileNotFoundException: het bestand dat wordt benaderd bestaat niet;KeyNotFoundException: de sleutel in het woordenboek bestaat niet;IndexOutOfRangeException: de opgegeven index van een array of lijst is ongeldig.
De term errorVarName is een variabele die het Exception-object opslaat en informatie bevat zoals het foutbericht, dat toegankelijk is via errorVarName.Message. Dit kan worden weggelaten als het niet wordt gebruikt:
index.cs
12345678910111213try { // code } catch (ExceptionType) { // code } ... finally { // code }
Hier volgt een voorbeeld van het gebruik van dit type try-catch-blok:
index.cs
123456789101112131415161718192021222324252627using System; class Program { static void Main(string[] args) { int[] myArray = { 0, 2, 4, 6, 8, 10 }; int i = 0; while (true) { try { Console.Write(myArray[i] / i + " "); i++; } catch(DivideByZeroException) { i++; } catch(IndexOutOfRangeException) { break; } } } }
Gebruik nu deze concepten. Vul de lege plekken in met relevante exceptietypen in de onderstaande code om de uitdaging te voltooien.
index.cs
1234567891011121314151617181920212223242526272829303132333435using System; using System.Collections.Generic; class Program { static void Main(string[] args) { int[] numbers = { 1, 2, 5, 7, 9 }; var numberNames = new Dictionary<int, string>(); numberNames.Add(1, "One"); numberNames.Add(2, "Two"); numberNames.Add(5, "Five"); numberNames.Add(9, "Nine"); int i = 0; while (true) { try { int key = numbers[i]; Console.WriteLine($"{key} is {numberNames[key]}"); i++; } catch (___) { break; } catch (___) { numberNames.Add(7, "Seven"); } } } }
Gebruik het relevante exceptietype voor elk catch-blok. Lees de code en bepaal welk catch-blok het meest geschikt is voor het afhandelen van een bepaald type exceptie.
index.cs
1234567891011121314151617181920212223242526272829303132333435using System; using System.Collections.Generic; public class HelloWorld { public static void Main(string[] args) { int[] numbers = { 1, 2, 5, 7, 9 }; var numberNames = new Dictionary<int, string>(); numberNames.Add(1, "One"); numberNames.Add(2, "Two"); numberNames.Add(5, "Five"); numberNames.Add(9, "Nine"); int i = 0; while (true) { try { int key = numbers[i]; Console.WriteLine($"{key} is {numberNames[key]}"); i++; } catch (IndexOutOfRangeException) { break; } catch (KeyNotFoundException) { numberNames.Add(7, "Seven"); } } } }
Bedankt voor je feedback!