Udostępnij za pośrednictwem


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 bloku catch i rozwiązać problem bez ponownego zgłaszania wyjątku, jednak częściej jedyną rzeczą, którą można zrobić, jest upewnienie się, że zgłaszany jest odpowiedni wyjątek.

Przykład

W tym przykładzie IndexOutOfRangeException nie jest najbardziej odpowiednim wyjątkiem: ArgumentOutOfRangeException, ponieważ jest bardziej sensownym wyborem dla metody, ponieważ błąd wynika z przekazanego przez obiekt wywołujący argumentu index.

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ć IndexOutOfRangeException , jeśli wystąpi. Blok catch obsługuje IndexOutOfRangeException i zamiast tego wyrzuca bardziej odpowiednie ArgumentOutOfRangeException. Aby przekazać wywołującemu jak najwięcej informacji, rozważ podanie 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.