Jak obsłużyć wyjątek przy użyciu metody try/catch

Celem bloku try-catch jest przechwycenie i obsługa wyjątku wygenerowanego przez działający kod. Niektóre wyjątki można obsłużyć w catch bloku i rozwiązać problem bez ponownego ponownego wprowadzania wyjątku, jednak częściej jedyną rzeczą, którą można zrobić, jest upewnienie się, że jest zgłaszany odpowiedni wyjątek.

Przykład

W tym przykładzie nie jest to najbardziej odpowiedni wyjątek: ArgumentOutOfRangeException ma większe znaczenie dla metody, IndexOutOfRangeException ponieważ błąd jest spowodowany przez index argument przekazany przez obiekt wywołujący.

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

Komentarze

Kod, który powoduje wyjątek, znajduje się w try bloku. Instrukcja catch jest dodawana natychmiast po nim, aby obsłużyć IndexOutOfRangeExceptionmetodę , jeśli wystąpi. Blok catch obsługuje IndexOutOfRangeException element i zgłasza zamiast tego bardziej odpowiednie ArgumentOutOfRangeException . Aby udostępnić obiekt wywołujący jak najwięcej informacji, rozważ określenie oryginalnego wyjątku jako InnerException nowego wyjątku. InnerException Ponieważ właściwość jest tylko do odczytu, należy przypisać ją w konstruktorze nowego wyjątku.