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

bookUitdaging: Foutafhandeling

De try-catch-syntaxis heeft een extra mogelijkheid waarmee specifieke typen fouten kunnen worden opgevangen en afzonderlijk kunnen worden afgehandeld:

index.cs

index.cs

copy
1234567891011121314151617
try { // 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:

  1. DivideByZeroException: er is sprake van een deling door nul;
  2. FileNotFoundException: het bestand dat wordt benaderd bestaat niet;
  3. KeyNotFoundException: de sleutel in het woordenboek bestaat niet;
  4. 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

index.cs

copy
12345678910111213
try { // code } catch (ExceptionType) { // code } ... finally { // code }

Hier volgt een voorbeeld van het gebruik van dit type try-catch-blok:

index.cs

index.cs

copy
123456789101112131415161718192021222324252627
using 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

index.cs

copy
1234567891011121314151617181920212223242526272829303132333435
using 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

index.cs

copy
1234567891011121314151617181920212223242526272829303132333435
using 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"); } } } }
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 10

Vraag AI

expand

Vraag AI

ChatGPT

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

Suggested prompts:

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?

bookUitdaging: 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

index.cs

copy
1234567891011121314151617
try { // 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:

  1. DivideByZeroException: er is sprake van een deling door nul;
  2. FileNotFoundException: het bestand dat wordt benaderd bestaat niet;
  3. KeyNotFoundException: de sleutel in het woordenboek bestaat niet;
  4. 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

index.cs

copy
12345678910111213
try { // code } catch (ExceptionType) { // code } ... finally { // code }

Hier volgt een voorbeeld van het gebruik van dit type try-catch-blok:

index.cs

index.cs

copy
123456789101112131415161718192021222324252627
using 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

index.cs

copy
1234567891011121314151617181920212223242526272829303132333435
using 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

index.cs

copy
1234567891011121314151617181920212223242526272829303132333435
using 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"); } } } }
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 10
some-alt