when (C# başvurusu)
Aşağıdaki bağlamlarda bir filtre koşulu belirtmek için bağlamsal anahtar sözcüğünü kullanırsınız when
:
catch
Try/catch veya try/catch/finally bloğunun deyiminde.- Deyiminde
switch
bir vaka koruyucusu olarak. - İfadede büyük/küçük harf koruyucusu
switch
olarak.
when
deyiminde catch
anahtar when
sözcüğü, işleyicinin belirli bir catch
özel durumun yürütülmesi için doğru olması gereken bir koşul belirtmek üzere bir deyimde kullanılabilir. Söz dizimi şu şekildedir:
catch (ExceptionType [e]) when (expr)
burada ifade , Boole değeri olarak değerlendirilen bir ifadedir. döndürürse true
, özel durum işleyicisi yürütülür; değilse false
yürütülür.
Aşağıdaki örnek, özel durum iletisinin when
metnine bağlı olarak için HttpRequestException işleyicileri koşullu olarak yürütmek için anahtar sözcüğünü kullanır.
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;
}
}
}