Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.