Использование обработчиков исключений с пользовательской фильтрацией
Обработчики исключений с пользовательской фильтрацией перехватывают и обрабатывают исключения с учетом определенных для исключения требований. Эти обработчики используют инструкцию catch
с when
ключевое слово (Catch
и When
в Visual Basic).
Этот метод удобен, когда конкретный объект исключения соответствует нескольким ошибкам. В этом случае у объекта обычно есть свойство, которое содержит код ошибки. Свойство кода ошибки в выражении можно использовать для выбора только конкретной ошибки, которую вы хотите обрабатывать в этом catch
предложении.
В следующем примере показана catch
/when
инструкция.
try
{
//Try statements.
}
catch (Exception ex) when (ex.Message.Contains("404"))
{
//Catch statements.
}
Try
'Try statements.
Catch When Err = VBErr_ClassLoadException
'Catch statements.
End Try
Выражение для предложения пользовательской фильтрации не ограничено. При возникновении исключения в выражении с пользовательской фильтрацией это исключение отбрасывается, а выражение фильтрации считается равным false. В этом случае среда CLR продолжает поиск обработчика для текущего исключения.
Объединение конкретных исключений и предложений, отфильтрованные пользователем
Инструкция catch
может содержать как конкретное исключение, так и предложения, отфильтрованные пользователем. Сначала среда выполнения проверяет конкретное исключение. Если проверка пройдена, среда выполнения выполняет фильтр пользователя. Общий фильтр может содержать ссылку на переменную, объявленную в классе фильтра. Обратите внимание, что порядок двух выражений фильтра изменить нельзя.
В следующем примере показано определенное исключение в инструкции catch, а также предложение, отфильтрованное пользователем, с помощью ключевое слово.
try
{
//Try statements.
}
catch (System.Net.Http.HttpRequestException ex) when (ex.Message.Contains("404"))
{
//Catch statements.
}
Try
'Try statements.
Catch cle As ClassLoadException When cle.IsRecoverable()
'Catch statements.
End Try