ne zaman (C# Başvurusu)
whenAşağıdaki bağlamlarda bir filtre koşulu belirtmek için bağlamsal anahtar sözcüğünü kullanabilirsiniz:
catchTry/catch veya try/catch/finally bloğunun bildiriminde.-
switchBildirimindebir Case Guard olarak. -
switchİfadedebir Case Guard olarak.
when bir catch ifadede
C# 6 ' dan itibaren, when catch belirli bir özel durumun yürütülmesi için doğru olması gereken bir koşul belirtmek üzere bir bildirimde kullanılabilir. Sözdizimi şöyledir:
catch (ExceptionType [e]) when (expr)
Burada Expr , Boolean değer değerlendiren bir ifadedir. Döndürürse true , özel durum işleyicisi yürütülür; varsa, yapmaz false .
Aşağıdaki örnek, when HttpRequestException özel durum iletisinin metnine bağlı olarak 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;
}
}
}