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

Ein try/catch-Block soll von Arbeitscode generierte Ausnahmen abfangen und verarbeiten. Einige Ausnahmen können in einem catch-Block verarbeitet werden, und das Problem kann behoben werden, ohne dass die Ausnahme erneut ausgelöst wird. Allerdings können Sie meistens nur sicherstellen, dass die passende Ausnahme ausgelöst wird.

Beispiel

In diesem Beispiel ist <xref:System.IndexOutOfRangeException> nicht die passendste Ausnahme: Für diese Methode ist <xref:System.ArgumentOutOfRangeException> sinnvoller, da der Fehler durch die Übergabe des Arguments index des Aufrufers 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 direkt danach hinzugefügt, um IndexOutOfRangeException zu verarbeiten, falls dies auftritt. Der catch-Block verarbeitet IndexOutOfRangeException und löst stattdessen die passendere Ausnahme ArgumentOutOfRangeException aus. Um dem Aufrufer so viele Informationen wie möglich bereitzustellen, können Sie die ursprüngliche Ausnahme auf <xref:System.Exception.InnerException%2A> der neuen Ausnahme festlegen. Da die Eigenschaft <xref:System.Exception.InnerException%2A> schreibgeschützt ist, müssen Sie sie im Konstruktor der neuen Ausnahme zuweisen.

Siehe auch

C#-Programmierhandbuch
Ausnahmen und Ausnahmebehandlung
Ausnahmebehandlung