Search
Close this search box.
Ein Mann am Computer, der eine Fehlermeldung auf dem Bildschirm betrachtet.

C# Ausnahmen/Exception - Wie Sie Fehler in Ihrem Code behandeln können

Fehler in Ihrem Code können dazu führen, dass Ihre Anwendung nicht wie erwartet funktioniert oder sogar abstürzt. Um dies zu vermeiden, bietet C# eine Möglichkeit, auf Fehler zu reagieren und diese zu behandeln – Ausnahmen oder Exceptions. In diesem Artikel werden wir uns mit dem Konzept von C# Ausnahmen beschäftigen und Ihnen zeigen, wie Sie diese nutzen können, um sicherzustellen, dass Ihre Anwendungen reibungslos laufen.

Was sind C# Ausnahmen? Eine Ausnahme ist eine Benachrichtigung, die von einem Programm ausgelöst wird, wenn ein Fehler auftritt. Dies kann eine Division durch Null, ein Zugriff auf einen ungültigen Index in einem Array oder ein anderer Fehler sein, der dazu führt, dass Ihr Programm nicht wie erwartet funktioniert. In C# können Sie Ausnahmen mithilfe von try-catch-Blöcken behandeln.

Wie funktionieren C# Ausnahmen? C# Ausnahmen werden normalerweise mithilfe von try-catch-Blöcken behandelt. Der try-Block enthält den Code, der potenziell eine Ausnahme auslösen kann. Wenn eine Ausnahme ausgelöst wird, wird der Code im zugehörigen catch-Block ausgeführt. Der catch-Block enthält den Code, der auf die Ausnahme reagiert und geeignete Maßnahmen ergreift. Sie können auch einen finally-Block verwenden, um Code auszuführen, unabhängig davon, ob eine Ausnahme ausgelöst wird oder nicht.

Ein Beispiel für den Einsatz von try-catch-Blöcken in C# kann wie folgt aussehen:

				
					try
{
    // Hier wird ein Codeblock ausgeführt, der eine Ausnahme auslösen kann
    int a = 10;
    int b = 0;
    int result = a / b;
}
catch (Exception ex)
{
    // Hier wird der Ausnahmefehler behandelt und eine entsprechende Nachricht ausgegeben
    Console.WriteLine("Es ist ein Fehler aufgetreten: " + ex.Message);
}
finally
{
    // Hier wird Code ausgeführt, der unabhängig davon ausgeführt wird, ob eine Ausnahme aufgetreten ist oder nicht
    Console.WriteLine("Das try-catch-Block wurde abgeschlossen.");
}

				
			

In diesem Beispiel wird versucht, eine Division durch Null durchzuführen, was eine Ausnahme auslöst. Der try-Block enthält den Code, der die Ausnahme auslöst. Wenn eine Ausnahme ausgelöst wird, wird der catch-Block ausgeführt, der den Fehler behandelt und eine entsprechende Fehlermeldung ausgibt. Der finally-Block wird immer ausgeführt, unabhängig davon, ob eine Ausnahme aufgetreten ist oder nicht.

Dieses Beispiel zeigt die grundlegende Verwendung von try-catch-Blöcken in C#, um auf Ausnahmen zu reagieren und Fehler zu behandeln.

  • Ein weiteres Beispiel: Division durch Null:
				
					int x = 10;
int y = 0;
try
{
int result = x / y;
}
catch (DivideByZeroException ex)
{
    Console.WriteLine("Fehler: Division durch Null");
}
				
			
  • Zugriff auf einen ungültigen Index in einem Array:
				
					int[] numbers = { 1, 2, 3 };
try
{
int num = numbers[3];
}
catch (IndexOutOfRangeException ex)
{
    Console.WriteLine("Fehler: Zugriff auf einen ungültigen Index");
}
				
			
  • Eigene Ausnahme auslösen:

Hier sind weitere Beispiele:

				
					class MyException : Exception
{
public MyException(string message) : base(message)
{
}
}

try
{
throw new MyException("Meine eigene Ausnahme");
}
catch (MyException ex)
{
    Console.WriteLine(ex.Message);
}
				
			

Wie werden C# Ausnahmen in der Programmierung verwendet? C# Ausnahmen werden in der Programmierung verwendet, um auf Fehler zu reagieren und sicherzustellen, dass Anwendungen nicht abstürzen. Sie können Ausnahmen verwenden, um auf unerwartete Fehler zu reagieren und die Benutzer über die Art des Fehlers zu informieren. Sie können auch Ausnahmen verwenden, um Anweisungen auszuführen, wenn ein Fehler auftritt, z. B. eine Protokolldatei schreiben oder eine E-Mail senden.

Hier sind einige weitere Beispiele für die Verwendung von Ausnahmen/Exception in C#:

    1. FileNotFoundException: Eine FileNotFoundException tritt auf, wenn versucht wird, auf eine Datei zuzugreifen, die nicht gefunden werden kann
				
					try
{
    using (StreamReader reader = new StreamReader("example.txt"))
    {
        string contents = reader.ReadToEnd();
        Console.WriteLine(contents);
    }
}
catch (FileNotFoundException ex)
{
    Console.WriteLine("File not found");
}

				
			
  • FormatException: Eine FormatException tritt auf, wenn eine Zeichenfolge in ein numerisches Format umgewandelt werden soll, das ungültig ist.

Beispiel:

				
					try
{
    int number = int.Parse("abc");
}
catch (FormatException ex)
{
    Console.WriteLine("Invalid format");
}

				
			

Diese Beispiele zeigen, wie Ausnahmen in verschiedenen Situationen in C# verwendet werden können, um sicherzustellen, dass das Programm ordnungsgemäß ausgeführt wird, auch wenn unerwartete Bedingungen auftreten.

Hier sind einige der häufigsten C#-Ausnahmearten:

  1. ArgumentException
  2. ArgumentNullException
  3. ArgumentOutOfRangeException
  4. DivideByZeroException
  5. IndexOutOfRangeException
  6. InvalidOperationException
  7. NullReferenceException
  8. OutOfMemoryException
  9. OverflowException
  10. StackOverflowException
  11. FileNotFoundException
  12. IOException
  13. FormatException
  14. NotSupportedException
  15. UnauthorizedAccessException

Es gibt jedoch noch viele weitere Ausnahmearten, die von C# unterstützt werden. Es ist wichtig, die spezifischen Ausnahmen zu kennen, die in einem bestimmten Szenario auftreten können, um die richtige Fehlerbehandlung zu implementieren.

Fazit: C# Ausnahmen sind ein leistungsstarkes Werkzeug, um auf Fehler in Ihrem Code zu reagieren und sicherzustellen, dass Ihre Anwendungen reibungslos laufen. Durch die Verwendung von try-catch-Blöcken können Sie auf Ausnahmen reagieren

Aufgabe:

Aufgabe zum Mitmachen:

Schreiben Sie ein C#-Programm, das den Benutzer nach zwei Zahlen fragt und diese Zahlen durch eine Division teilt. Das Programm sollte eine Ausnahme auslösen, wenn die zweite Zahl 0 ist.

Um die Lösung anzuzeigen, fahre mit der Maus in die Mitte des darunterliegenden Fensters.

				
					using System;

class Program
{
    static void Main(string[] args)
    {
        try
        {
            Console.Write("Geben Sie eine Zahl ein: ");
            int zahl1 = Convert.ToInt32(Console.ReadLine());

            Console.Write("Geben Sie eine zweite Zahl ein: ");
            int zahl2 = Convert.ToInt32(Console.ReadLine());

            int ergebnis = zahl1 / zahl2;
            Console.WriteLine("Ergebnis: " + ergebnis);
        }
        catch (DivideByZeroException)
        {
            Console.WriteLine("Fehler: Division durch Null.");
        }
        catch (FormatException)
        {
            Console.WriteLine("Fehler: Falsches Format.");
        }
        catch (Exception e)
        {
            Console.WriteLine("Fehler: " + e.Message);
        }

        Console.ReadLine();
    }
}

				
			

In dieser Lösung wird eine try-catch-Struktur verwendet, um Ausnahmen abzufangen. Der Benutzer wird aufgefordert, zwei Zahlen einzugeben, die durch eine Division geteilt werden. Wenn die zweite Zahl 0 ist, wird eine DivideByZeroException ausgelöst. Wenn der Benutzer eine ungültige Eingabe tätigt, wird eine FormatException ausgelöst. Alle anderen Ausnahmen werden von der allgemeinen Exception-Klasse abgefangen und eine Fehlermeldung wird ausgegeben.

Zurück zum vorherigen Teil des C# Kurses
Klicken Sie auf den Pfeil, um zum vorherigen Teil des Kurses zurückzukehren
Pfeil-Button zum nächsten Teil des Kurses
Klicken Sie auf den Pfeil, um zum nächsten Teil des Kurses zu gelangen