when
コンテキスト キーワードを使用して、次のコンテキストでフィルター条件を指定します。
-
try-catch
またはtry-catch-finally
ステートメントの catch 句。 -
switch
ステートメントのケース ガードとして。 -
switch
式のケース ガードとして。
when
catch 句内
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