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ć IndexOutOfRangeException
metodę , 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.