Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Для указания условия фильтра в следующих контекстах используется when контекстное ключевое слово:
- В предложении catch для оператора
try-catchилиtry-catch-finallyоператора. - В качестве охранника дела в заявлении
switch. - В качестве охранника регистра
switchв выражении.
when в предложении catch
Ключевое when слово можно использовать в предложении catch, чтобы указать условие, которое должно иметь значение true для обработчика для выполнения определенного исключения. Синтаксис:
catch (ExceptionType [e]) when (expr)
где expr — это выражение, которое оценивает логическое значение. Если он возвращается true, обработчик исключений выполняется; если falseон не выполняется.
Фильтры исключений с ключевым словом предоставляют несколько преимуществ по сравнению с when традиционными подходами к обработке исключений, включая более эффективную поддержку отладки и преимущества производительности. Подробное описание того, как фильтры исключений сохраняют стек вызовов и улучшают отладку, см . в статьях "Фильтры исключений" и традиционная обработка исключений.
В следующем примере ключевое слово используется when для условного выполнения обработчиков в HttpRequestException зависимости от текста сообщения об исключении.
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static void Main()
{
Console.WriteLine(MakeRequest().Result);
}
public static async Task<string> MakeRequest()
{
var client = new HttpClient();
var streamTask = client.GetStringAsync("https://localHost:10000");
try
{
var responseText = await streamTask;
return responseText;
}
catch (HttpRequestException e) when (e.Message.Contains("301"))
{
return "Site Moved";
}
catch (HttpRequestException e) when (e.Message.Contains("404"))
{
return "Page Not Found";
}
catch (HttpRequestException e)
{
return e.Message;
}
}
}