Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Utfordring: Feilhåndtering | Datastrukturer og Filhåndtering
C# Utover Det Grunnleggende

bookUtfordring: Feilhåndtering

try-catch-syntaksen har en utvidet syntaks som lar deg fange spesifikke typer feil 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 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:

  1. DivideByZeroException: det er et forsøk på å dele med null;
  2. FileNotFoundException: filen vi prøver å få tilgang til eksisterer ikke;
  3. KeyNotFoundException: nøkkelen i ordboken eksisterer ikke;
  4. 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

index.cs

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

Her er et eksempel på bruk av denne typen try-catch-blokk:

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

Nå, ved å bruke disse konseptene. Fyll inn de tomme feltene med relevante unntakstyper i følgende kode for å fullføre utfordringen.

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

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

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"); } } } }
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 10

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

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

bookUtfordring: 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

index.cs

copy
1234567891011121314151617
try { // 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:

  1. DivideByZeroException: det er et forsøk på å dele med null;
  2. FileNotFoundException: filen vi prøver å få tilgang til eksisterer ikke;
  3. KeyNotFoundException: nøkkelen i ordboken eksisterer ikke;
  4. 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

index.cs

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

Her er et eksempel på bruk av denne typen try-catch-blokk:

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

Nå, ved å bruke disse konseptene. Fyll inn de tomme feltene med relevante unntakstyper i følgende kode for å fullføre utfordringen.

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

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

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"); } } } }
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 10
some-alt