When (Referenční dokumentace jazyka C#)
whenKontextové klíčové slovo slouží k určení podmínky filtru v následujících kontextech:
- V
catchpříkazu pro blok try/catch nebo try/catch/finally . - V případě ochrany malých a velkých písmen v
switchpříkazu. - Jako Guard v případě
switchvýrazu.
when v catch příkazu
Počínaje jazykem C# 6 when lze použít v catch příkazu k určení podmínky, která musí být pravdivá pro obslužnou rutinu pro spuštění konkrétní výjimky. Jeho syntaxe je:
catch (ExceptionType [e]) when (expr)
kde expr je výraz, který je vyhodnocen jako logická hodnota. Pokud se vrátí true , spustí se obslužná rutina výjimky, pokud false není.
Následující příklad používá when klíčové slovo k podmíněnému provedení obslužných rutin pro HttpRequestException v závislosti na textu zprávy o výjimce.
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;
}
}
}