Herausforderung: Fehlerbehandlung
Die try-catch
-Syntax verfügt über eine zusätzliche Möglichkeit, mit der bestimmte Fehlertypen gezielt abgefangen und separat behandelt werden können:
index.cs
1234567891011121314151617try { // code } catch (ExceptionType errorVarName) { // code } catch (ExceptionType errorVarName) { // code } ... finally { // code }
Der Typ Exception
, der im vorherigen Kapitel verwendet wurde, fängt alle Arten von Fehlern ab. Es gibt jedoch einige Untertypen von Exception
, die spezifischere Fehler abfangen. Zu den häufigsten Exception-Typen gehören:
DivideByZeroException
: Es liegt eine Division durch Null vor;FileNotFoundException
: Die angeforderte Datei existiert nicht;KeyNotFoundException
: Der Schlüssel im Dictionary existiert nicht;IndexOutOfRangeException
: Der angegebene Index eines Arrays oder einer Liste ist ungültig.
Der Begriff errorVarName
bezeichnet eine Variable, die das Exception-Objekt speichert und Informationen wie die Fehlermeldung enthält, auf die über errorVarName.Message
zugegriffen werden kann. Dies kann weggelassen werden, wenn es nicht verwendet wird:
index.cs
12345678910111213try { // code } catch (ExceptionType) { // code } ... finally { // code }
Hier ist ein Beispiel für die Verwendung eines solchen try-catch
-Blocks:
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; } } } }
Nutzen Sie nun diese Konzepte. Ergänzen Sie die Lücken mit den passenden Ausnahmetypen im folgenden Code, um die Aufgabe abzuschließen.
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"); } } } }
Verwenden Sie für jeden catch
-Block den entsprechenden Ausnahmetyp. Lesen Sie den Code und verstehen Sie, welcher catch
-Block am besten geeignet ist, um einen bestimmten Ausnahmetyp zu behandeln.
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"); } } } }
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
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
Herausforderung: Fehlerbehandlung
Swipe um das Menü anzuzeigen
Die try-catch
-Syntax verfügt über eine zusätzliche Möglichkeit, mit der bestimmte Fehlertypen gezielt abgefangen und separat behandelt werden können:
index.cs
1234567891011121314151617try { // code } catch (ExceptionType errorVarName) { // code } catch (ExceptionType errorVarName) { // code } ... finally { // code }
Der Typ Exception
, der im vorherigen Kapitel verwendet wurde, fängt alle Arten von Fehlern ab. Es gibt jedoch einige Untertypen von Exception
, die spezifischere Fehler abfangen. Zu den häufigsten Exception-Typen gehören:
DivideByZeroException
: Es liegt eine Division durch Null vor;FileNotFoundException
: Die angeforderte Datei existiert nicht;KeyNotFoundException
: Der Schlüssel im Dictionary existiert nicht;IndexOutOfRangeException
: Der angegebene Index eines Arrays oder einer Liste ist ungültig.
Der Begriff errorVarName
bezeichnet eine Variable, die das Exception-Objekt speichert und Informationen wie die Fehlermeldung enthält, auf die über errorVarName.Message
zugegriffen werden kann. Dies kann weggelassen werden, wenn es nicht verwendet wird:
index.cs
12345678910111213try { // code } catch (ExceptionType) { // code } ... finally { // code }
Hier ist ein Beispiel für die Verwendung eines solchen try-catch
-Blocks:
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; } } } }
Nutzen Sie nun diese Konzepte. Ergänzen Sie die Lücken mit den passenden Ausnahmetypen im folgenden Code, um die Aufgabe abzuschließen.
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"); } } } }
Verwenden Sie für jeden catch
-Block den entsprechenden Ausnahmetyp. Lesen Sie den Code und verstehen Sie, welcher catch
-Block am besten geeignet ist, um einen bestimmten Ausnahmetyp zu behandeln.
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"); } } } }
Danke für Ihr Feedback!