when (C#-referens)
Du använder det kontextuella nyckelordet when
för att ange ett filtervillkor i följande kontexter:
- I en catch-sats i en eller
try-catch-finally
-try-catch
instruktion. - Som skiftvakt i -instruktionen
switch
. - Som skiftlägesskydd i uttrycket
switch
.
when
i en catch-sats
Nyckelordet when
kan användas i en catch-sats för att ange ett villkor som måste vara sant för att hanteraren ska kunna köra ett specifikt undantag. Syntaxen är:
catch (ExceptionType [e]) when (expr)
där expr är ett uttryck som utvärderas till ett booleskt värde. Om den returnerar true
körs undantagshanteraren. Om false
, så gör den inte det.
I följande exempel används nyckelordet when
för att villkorligt köra hanterare för en HttpRequestException beroende på texten i undantagsmeddelandet.
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;
}
}
}
Se även
Samarbeta med oss på GitHub
Källan för det här innehållet finns på GitHub, där du även kan skapa och granska ärenden och pull-begäranden. Se vår deltagarguide för mer information.