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
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!