Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Utmaning: Felhantering | Datastrukturer och Filhantering
C# Bortom Grunderna

bookUtmaning: Felhantering

try-catch-syntaxen har en ytterligare syntax som gör det möjligt att fånga specifika typer av fel och hantera dem separat:

index.cs

index.cs

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

Typen Exception som användes i föregående kapitel fångar alla typer av fel, men det finns vissa undertyper av Exception som fångar mer specifika feltyper. Nedan följer några vanliga undantagstyper:

  1. DivideByZeroException: division med noll;
  2. FileNotFoundException: filen som vi försöker komma åt existerar inte;
  3. KeyNotFoundException: nyckeln i ordboken existerar inte;
  4. IndexOutOfRangeException: det angivna indexet för en array eller lista är ogiltigt.

Termen errorVarName är en variabel som lagrar Exception-objektet och innehåller information som felmeddelandet, vilket kan nås via errorVarName.Message. Detta kan utelämnas om det inte används:

index.cs

index.cs

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

Här är ett exempel på hur man använder denna typ av try-catch-block:

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

Använd nu dessa koncept. Fyll i de tomma fälten med relevanta undantagstyper i följande kod för att slutföra utmaningen.

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

Använd relevant undantagstyp för varje catch-block. Läs koden och förstå vilket catch-block som är mest lämpligt för att hantera en viss typ av undantag.

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 allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 10

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

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

bookUtmaning: Felhantering

Svep för att visa menyn

try-catch-syntaxen har en ytterligare syntax som gör det möjligt att fånga specifika typer av fel och hantera dem separat:

index.cs

index.cs

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

Typen Exception som användes i föregående kapitel fångar alla typer av fel, men det finns vissa undertyper av Exception som fångar mer specifika feltyper. Nedan följer några vanliga undantagstyper:

  1. DivideByZeroException: division med noll;
  2. FileNotFoundException: filen som vi försöker komma åt existerar inte;
  3. KeyNotFoundException: nyckeln i ordboken existerar inte;
  4. IndexOutOfRangeException: det angivna indexet för en array eller lista är ogiltigt.

Termen errorVarName är en variabel som lagrar Exception-objektet och innehåller information som felmeddelandet, vilket kan nås via errorVarName.Message. Detta kan utelämnas om det inte används:

index.cs

index.cs

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

Här är ett exempel på hur man använder denna typ av try-catch-block:

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

Använd nu dessa koncept. Fyll i de tomma fälten med relevanta undantagstyper i följande kod för att slutföra utmaningen.

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

Använd relevant undantagstyp för varje catch-block. Läs koden och förstå vilket catch-block som är mest lämpligt för att hantera en viss typ av undantag.

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 allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 10
some-alt