Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Используйте контекстное ключевое when слово, чтобы указать условие фильтра в следующих контекстах:
- В предложении catch для оператора
try-catchилиtry-catch-finallyоператора. - В качестве охранника дела в заявлении
switch. - В качестве охранника регистра
switchв выражении.
Справочные документы по языку C# описывают последнюю выпущенную версию языка C#. Она также содержит начальную документацию по функциям в общедоступных предварительных версиях для предстоящего языкового выпуска.
Документация определяет любую функцию, впервые представленную в последних трех версиях языка или в текущих общедоступных предварительных версиях.
Подсказка
Чтобы узнать, когда функция впервые появилась в C#, ознакомьтесь со статьей об истории версий языка C#.
when в предложении catch
Используйте ключевое when слово в предложении catch, чтобы указать условие, которое должно соответствовать обработчику для выполнения определенного исключения. Синтаксис:
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;
}
}
}