Gewusst wie: Behandeln einer Ausnahme mit try/catch (C#-Programmierhandbuch)How to: Handle an Exception Using try/catch (C# Programming Guide)

Ein try/catch-Block soll von Arbeitscode generierte Ausnahmen abfangen und verarbeiten.The purpose of a try-catch block is to catch and handle an exception generated by working code. 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.Some exceptions can be handled in a catch block and the problem solved without the exception being re-thrown; however, more often the only thing that you can do is make sure that the appropriate exception is thrown.

BeispielExample

In diesem Beispiel ist IndexOutOfRangeException nicht die passendste Ausnahme: Für diese Methode ist ArgumentOutOfRangeException sinnvoller, da der Fehler durch die Übergabe des Arguments index des Aufrufers verursacht wird.In this example, IndexOutOfRangeException is not the most appropriate exception: ArgumentOutOfRangeException makes more sense for the method because the error is caused by the index argument passed in by the caller.

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);
        }
    }
}

KommentareComments

Der Code, der eine Ausnahme auslöst, ist im try-Block eingeschlossen.The code that causes an exception is enclosed in the try block. Eine catch-Anweisung wird direkt danach hinzugefügt, um IndexOutOfRangeException zu verarbeiten, falls dies auftritt.A catch statement is added immediately after to handle IndexOutOfRangeException, if it occurs. Der catch-Block verarbeitet IndexOutOfRangeException und löst stattdessen die passendere Ausnahme ArgumentOutOfRangeException aus.The catch block handles the IndexOutOfRangeException and throws the more appropriate ArgumentOutOfRangeException exception instead. Um dem Aufrufer so viele Informationen wie möglich bereitzustellen, können Sie die ursprüngliche Ausnahme auf InnerException der neuen Ausnahme festlegen.In order to provide the caller with as much information as possible, consider specifying the original exception as the InnerException of the new exception. Da die Eigenschaft InnerException schreibgeschützt ist, müssen Sie sie im Konstruktor der neuen Ausnahme zuweisen.Because the InnerException property is readonly, you must assign it in the constructor of the new exception.

Siehe auchSee Also

C#-ProgrammierhandbuchC# Programming Guide
Ausnahmen und AusnahmebehandlungExceptions and Exception Handling
AusnahmebehandlungException Handling