when (odwołanie w C#)
Słowo kluczowe kontekstowe służy when
do określania warunku filtru w następujących kontekstach:
- W klauzuli catch instrukcji
try-catch
ortry-catch-finally
. - Jako strażnik wielkości liter w instrukcji
switch
. - Jako osłona wielkości liter w wyrażeniu
switch
.
when
w klauzuli catch
Słowo when
kluczowe może być używane w klauzuli catch, aby określić warunek, który musi być spełniony dla programu obsługi dla określonego wyjątku do wykonania. Jego składnia to:
catch (ExceptionType [e]) when (expr)
gdzie wyrażenie jest wyrażeniem, które daje w wyniku wartość logiczną. Jeśli zwraca true
wartość , program obsługi wyjątków jest wykonywany; jeśli false
, nie.
W poniższym przykładzie użyto słowa kluczowego when
do warunkowego wykonywania procedur obsługi w HttpRequestException zależności od tekstu komunikatu wyjątku.
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;
}
}
}