Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Udfordring: Fejlhåndtering | Datastrukturer og Filhåndtering
C# Ud Over Det Grundlæggende

bookUdfordring: Fejlhåndtering

try-catch-syntaksen har en yderligere syntaks, som gør det muligt at fange specifikke typer af fejl og håndtere dem separat:

index.cs

index.cs

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

Typen Exception, som blev brugt i det forrige kapitel, opfanger alle former for fejl, men der findes nogle undertyper af Exception, som opfanger mere specifikke typer af fejl. Følgende er nogle almindelige exception-typer:

  1. DivideByZeroException: der er en division med nul;
  2. FileNotFoundException: filen, der forsøges tilgået, eksisterer ikke;
  3. KeyNotFoundException: ordbogs-nøglen eksisterer ikke;
  4. IndexOutOfRangeException: det angivne indeks for et array eller en liste er ugyldigt.

Udtrykket errorVarName er en variabel, der gemmer Exception-objektet og indeholder information som fejlbeskeden, der kan tilgås via errorVarName.Message. Dette kan udelades, hvis det ikke benyttes:

index.cs

index.cs

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

Her er et eksempel på brug af denne 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; } } } }

Brug nu disse koncepter. Udfyld de tomme felter med relevante undtagelsestyper i følgende kode for at fuldføre udfordringen.

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"); } } } }

Brug den relevante undtagelsestype for hver catch-blok. Læs koden og forstå, hvilken catch-blok der er mest passende til at håndtere en bestemt type undtagelse.

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"); } } } }
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 10

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

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?

Awesome!

Completion rate improved to 2.04

bookUdfordring: Fejlhåndtering

Stryg for at vise menuen

try-catch-syntaksen har en yderligere syntaks, som gør det muligt at fange specifikke typer af fejl og håndtere dem separat:

index.cs

index.cs

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

Typen Exception, som blev brugt i det forrige kapitel, opfanger alle former for fejl, men der findes nogle undertyper af Exception, som opfanger mere specifikke typer af fejl. Følgende er nogle almindelige exception-typer:

  1. DivideByZeroException: der er en division med nul;
  2. FileNotFoundException: filen, der forsøges tilgået, eksisterer ikke;
  3. KeyNotFoundException: ordbogs-nøglen eksisterer ikke;
  4. IndexOutOfRangeException: det angivne indeks for et array eller en liste er ugyldigt.

Udtrykket errorVarName er en variabel, der gemmer Exception-objektet og indeholder information som fejlbeskeden, der kan tilgås via errorVarName.Message. Dette kan udelades, hvis det ikke benyttes:

index.cs

index.cs

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

Her er et eksempel på brug af denne 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; } } } }

Brug nu disse koncepter. Udfyld de tomme felter med relevante undtagelsestyper i følgende kode for at fuldføre udfordringen.

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"); } } } }

Brug den relevante undtagelsestype for hver catch-blok. Læs koden og forstå, hvilken catch-blok der er mest passende til at håndtere en bestemt type undtagelse.

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"); } } } }
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 10
some-alt