Udfordring: 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
1234567891011121314151617try { // 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:
DivideByZeroException
: der er en division med nul;FileNotFoundException
: filen, der forsøges tilgået, eksisterer ikke;KeyNotFoundException
: ordbogs-nøglen eksisterer ikke;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
12345678910111213try { // code } catch (ExceptionType) { // code } ... finally { // code }
Her er et eksempel på brug af denne 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; } } } }
Brug nu disse koncepter. Udfyld de tomme felter med relevante undtagelsestyper i følgende kode for at fuldføre udfordringen.
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"); } } } }
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
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"); } } } }
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
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
Udfordring: 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
1234567891011121314151617try { // 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:
DivideByZeroException
: der er en division med nul;FileNotFoundException
: filen, der forsøges tilgået, eksisterer ikke;KeyNotFoundException
: ordbogs-nøglen eksisterer ikke;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
12345678910111213try { // code } catch (ExceptionType) { // code } ... finally { // code }
Her er et eksempel på brug af denne 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; } } } }
Brug nu disse koncepter. Udfyld de tomme felter med relevante undtagelsestyper i følgende kode for at fuldføre udfordringen.
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"); } } } }
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
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"); } } } }
Tak for dine kommentarer!