Kursinhalt
C# Über die Grundlagen Hinaus
C# Über die Grundlagen Hinaus
Fehlerbehandlung Üben
Die try-catch
-Syntax hat eine zusätzliche Syntax, die es uns ermöglicht, spezifische Fehlertypen abzufangen und sie separat zu behandeln:
index
try { // code } catch (ExceptionType errorVarName) { // code } catch (ExceptionType errorVarName) { // code } ... finally { // code }
Der Typ Exception
, den wir im vorherigen Kapitel verwendet haben, fängt einfach alle Arten von Fehlern ab. Es gibt jedoch einige Untertypen von Exception
, die spezifischere Arten von Fehlern abfangen. Im Folgenden sind einige häufige Ausnahmearten aufgeführt:
DivideByZeroException
: Es gibt eine Division durch Null;FileNotFoundException
: Die Datei, auf die wir zugreifen, existiert nicht;KeyNotFoundException
: Der Schlüssel im Wörterbuch existiert nicht;IndexOutOfRangeException
: Der angegebene Index eines Arrays oder einer Liste ist ungültig.
Der Begriff errorVarName
ist eine Variable, die das Exception-Objekt speichert und Informationen wie die Fehlermeldung enthält, die über errorVarName.Message
abgerufen werden können. Wir können das weglassen, falls wir es nicht verwenden:
index
try { // code } catch (ExceptionType) { // code } ... finally { // code }
Hier ist ein Beispiel für die Verwendung eines solchen try-catch-Blocks:
index
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; } } } }
Nun verwenden Sie diese Konzepte. Füllen Sie die Lücken mit den relevanten Ausnahmetypen im folgenden Code, um die Herausforderung abzuschließen.
index
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"); } } } }
Danke für Ihr Feedback!