Utfordring: Feilhåndtering
try-catch
-syntaksen har en utvidet syntaks som lar deg fange spesifikke typer feil og håndtere dem separat:
index.cs
1234567891011121314151617try { // code } catch (ExceptionType errorVarName) { // code } catch (ExceptionType errorVarName) { // code } ... finally { // code }
Typen Exception
som ble brukt i forrige kapittel fanger opp alle typer feil, men det finnes noen undertyper av Exception
som fanger mer spesifikke typer feil. Følgende er noen vanlige unntakstyper:
DivideByZeroException
: det er et forsøk på å dele med null;FileNotFoundException
: filen vi prøver å få tilgang til eksisterer ikke;KeyNotFoundException
: nøkkelen i ordboken eksisterer ikke;IndexOutOfRangeException
: den angitte indeksen i en tabell eller liste er ugyldig.
Begrepet errorVarName
er en variabel som lagrer Exception-objektet, og har informasjon som feilmeldingen, som kan nås via errorVarName.Message
. Dette kan utelates dersom det ikke skal brukes:
index.cs
12345678910111213try { // code } catch (ExceptionType) { // code } ... finally { // code }
Her er et eksempel på bruk av denne typen try-catch
-blokk:
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; } } } }
Nå, ved å bruke disse konseptene. Fyll inn de tomme feltene med relevante unntakstyper i følgende kode for å fullføre utfordringen.
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"); } } } }
Bruk relevant unntakstype for hver catch
-blokk. Les koden og forstå hvilken catch
-blokk som er mest hensiktsmessig for å håndtere en bestemt type unntak.
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"); } } } }
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
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
Utfordring: Feilhåndtering
Sveip for å vise menyen
try-catch
-syntaksen har en utvidet syntaks som lar deg fange spesifikke typer feil og håndtere dem separat:
index.cs
1234567891011121314151617try { // code } catch (ExceptionType errorVarName) { // code } catch (ExceptionType errorVarName) { // code } ... finally { // code }
Typen Exception
som ble brukt i forrige kapittel fanger opp alle typer feil, men det finnes noen undertyper av Exception
som fanger mer spesifikke typer feil. Følgende er noen vanlige unntakstyper:
DivideByZeroException
: det er et forsøk på å dele med null;FileNotFoundException
: filen vi prøver å få tilgang til eksisterer ikke;KeyNotFoundException
: nøkkelen i ordboken eksisterer ikke;IndexOutOfRangeException
: den angitte indeksen i en tabell eller liste er ugyldig.
Begrepet errorVarName
er en variabel som lagrer Exception-objektet, og har informasjon som feilmeldingen, som kan nås via errorVarName.Message
. Dette kan utelates dersom det ikke skal brukes:
index.cs
12345678910111213try { // code } catch (ExceptionType) { // code } ... finally { // code }
Her er et eksempel på bruk av denne typen try-catch
-blokk:
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; } } } }
Nå, ved å bruke disse konseptene. Fyll inn de tomme feltene med relevante unntakstyper i følgende kode for å fullføre utfordringen.
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"); } } } }
Bruk relevant unntakstype for hver catch
-blokk. Les koden og forstå hvilken catch
-blokk som er mest hensiktsmessig for å håndtere en bestemt type unntak.
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"); } } } }
Takk for tilbakemeldingene dine!