when (C# リファレンス)
コンテキスト キーワード when
は、次のコンテキストでフィルター条件を指定するために使用します。
try-catch
またはtry-catch-finally
ステートメントの catch 句内。switch
ステートメントのケース ガードとして。switch
式のケース ガードとして。
catch 句内の when
when
キーワードを catch 句で使用して、特定の例外のハンドラーを実行するために true になる必要がある条件を指定できます。 構文は次のとおりです。
catch (ExceptionType [e]) when (expr)
expr の箇所には、ブール値に評価される式を指定します。 true
が返された場合は、例外ハンドラーが実行されます。false
の場合は実行されません。
次の例では、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;
}
}
}
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET