when (C# reference)
You use the when
contextual keyword to specify a filter condition in the following contexts:
- In a catch clause of a
try-catch
ortry-catch-finally
statement. - As a case guard in the
switch
statement. - As a case guard in the
switch
expression.
when
in a catch clause
The when
keyword can be used in a catch clause to specify a condition that must be true for the handler for a specific exception to execute. Its syntax is:
catch (ExceptionType [e]) when (expr)
where expr is an expression that evaluates to a Boolean value. If it returns true
, the exception handler executes; if false
, it does not.
The following example uses the when
keyword to conditionally execute handlers for an HttpRequestException depending on the text of the exception message.
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;
}
}
}
See also
Tee yhteistyötä kanssamme GitHubissa
Tämän sisällön lähde on GitHubissa, jossa voit myös luoda ja tarkastella ongelmia ja pull-pyyntöjä. Katso lisätietoja osallistujan oppaasta.