BESTE WEBSITE FÜR WEBENTWICKLER
C# Sprache. W3Schools auf Deutsch. Unterricht für Anfänger

Ua En Es

C# Ausnahmen - Try..Catch


C# Ausnahmen

Bei der Ausführung von C#-Code können unterschiedliche Fehler auftreten: Codierungsfehler des Programmierers, Fehler aufgrund falscher Eingaben oder andere unvorhersehbare Dinge.

Wenn ein Fehler auftritt, stoppt C# normalerweise und generiert eine Fehlermeldung. Der Fachbegriff dafür lautet: C# löst eine Ausnahme (einen Fehler) aus.


C# try und catch

Mit der try-Anweisung können Sie einen Codeblock definieren, der während der Ausführung auf Fehler getestet wird.

Mit der catch-Anweisung können Sie einen Codeblock definieren, der ausgeführt wird, wenn im try-Block ein Fehler auftritt.

Die Schlüsselwörter try und catch kommen paarweise vor:

Syntax

try
{
  //  Codeblock zum Ausprobieren
}
catch (Exception e)
{
  //  Codeblock zur Fehlerbehandlung
}

Betrachten Sie das folgende Beispiel, in dem wir ein Array aus drei Ganzzahlen erstellen:

Dadurch wird ein Fehler generiert, da myNumbers[10] nicht existiert.

int[] myNumbers = {1, 2, 3};
Console.WriteLine(myNumbers[10]); // error!

Die Fehlermeldung wird etwa so aussehen:

System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'

Wenn ein Fehler auftritt, können wir try...catch verwenden, um den Fehler abzufangen und Code zur Behebung auszuführen.

Im folgenden Beispiel verwenden wir die Variable innerhalb des Catch-Blocks (e) zusammen mit der integrierten Message-Eigenschaft, die eine Meldung ausgibt, die die Ausnahme beschreibt:

Beispiel

try
{
  int[] myNumbers = {1, 2, 3};
  Console.WriteLine(myNumbers[10]);
}
catch (Exception e)
{
  Console.WriteLine(e.Message);
}

Die Ausgabe wird sein:

Index was outside the bounds of the array.
Try it Yourself »

Sie können auch eine eigene Fehlermeldung ausgeben:

Beispiel

try
{
  int[] myNumbers = {1, 2, 3};
  Console.WriteLine(myNumbers[10]);
}
catch (Exception e)
{
  Console.WriteLine("Something went wrong.");
}

Die Ausgabe wird sein:

Something went wrong.
Try it Yourself »

Finally

Mit der Anweisung finally können Sie Code unabhängig vom Ergebnis nach try...catch ausführen:

Beispiel

try
{
  int[] myNumbers = {1, 2, 3};
  Console.WriteLine(myNumbers[10]);
}
catch (Exception e)
{
  Console.WriteLine("Something went wrong.");
}
finally
{
  Console.WriteLine("The 'try catch' is finished.");
}

Die Ausgabe wird sein:

Something went wrong.
The 'try catch' is finished.
Try it Yourself »

Das Schlüsselwort throw

Mit der throw-Anweisung können Sie einen benutzerdefinierten Fehler erstellen.

Die throw-Anweisung wird zusammen mit einer Ausnahmeklasse verwendet. In C# sind viele Ausnahmeklassen verfügbar: ArithmeticException, FileNotFoundException, IndexOutOfRangeException, TimeOutException, etc:

Beispiel

static void checkAge(int age)
{
  if (age < 18)
  {
    throw new ArithmeticException("Access denied - You must be at least 18 years old.");
  }
  else
  {
    Console.WriteLine("Access granted - You are old enough!");
  }
}

static void Main(string[] args)
{
  checkAge(15);
}

Die im Programm angezeigte Fehlermeldung lautet:

System.ArithmeticException: 'Access denied - You must be at least 18 years old.'

Wenn age 20 wäre, würden Sie keine Ausnahme erhalten:

Beispiel

checkAge(20);

Die Ausgabe wird sein:

Access granted - You are old enough!
Try it Yourself »