Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Uitdaging: Foutafhandeling | Datastructuren & Bestandsafhandeling
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.

Awesome!

Completion rate improved to 2.04

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