Gewusst wie: Behandeln einer Ausnahme mit try/catch (C#-Programmierhandbuch)

Der Zweck eines try-catch-Blocks ist das Abfangen und Behandeln einer Ausnahme, die durch Arbeitscode generiert wurde. Einige Ausnahmen können in einem catch-Block behandelt werden, sodass das Problem behoben ist und die Ausnahme nicht wieder ausgelöst wird. Meistens können Sie jedoch nur sicherstellen, dass eine passendere Ausnahme ausgelöst wird.

Beispiel

In diesem Beispiel ist IndexOutOfRangeException nicht die geeignetste Ausnahme: ArgumentOutOfRangeException ist für die Methode sinnvoller, da der Fehler durch das vom Aufrufer übergebene index-Argument verursacht wird.

class TestTryCatch
{
    static int GetInt(int[] array, int index)
    {
        try
        {
            return array[index];
        }
        catch (System.IndexOutOfRangeException e)  // CS0168
        {
            System.Console.WriteLine(e.Message);
            // Set IndexOutOfRangeException to the new exception's InnerException.
            throw new System.ArgumentOutOfRangeException("index parameter is out of range.", e);
        }
    }
}

Kommentare

Der Code, der eine Ausnahme auslöst, ist im try-Block eingeschlossen. Eine catch-Anweisung wird unmittelbar anschließend hinzugefügt, um IndexOutOfRangeException zu behandeln, wenn sie auftritt. Der catch-Block behandelt die IndexOutOfRangeException und löst stattdessen die passendere ArgumentOutOfRangeException-Ausnahme aus. Um dem Aufrufer möglichst viele Informationen bereitzustellen, sollten Sie die ursprüngliche Ausnahme als InnerException der neuen Ausnahme angeben. Da die InnerException-Eigenschaft schreibgeschützt ist, müssen Sie sie im Konstruktor der neuen Ausnahme zuweisen.

Siehe auch

Referenz

Ausnahmen und Ausnahmebehandlung (C#-Programmierhandbuch)

Ausnahmebehandlung (C#-Programmierhandbuch)

Konzepte

C#-Programmierhandbuch