wanneer (C#-verwijzing)
U gebruikt het when
contextuele trefwoord om een filtervoorwaarde op te geven in de volgende contexten:
- In een catch-component van een
try-catch
oftry-catch-finally
instructie. - Als case guard in de
switch
verklaring. - Als case guard in de
switch
expressie.
when
in een catch-component
Het when
trefwoord kan worden gebruikt in een catch-component om een voorwaarde op te geven die waar moet zijn voor de handler voor een specifieke uitzondering die moet worden uitgevoerd. De syntaxis is:
catch (ExceptionType [e]) when (expr)
waarbij expr een expressie is die resulteert in een Booleaanse waarde. Als deze wordt geretourneerd true
, wordt de uitzonderingshandler uitgevoerd. Als false
dit niet het geval is.
In het volgende voorbeeld wordt het when
trefwoord gebruikt om handlers voorwaardelijk uit te voeren voor een HttpRequestException , afhankelijk van de tekst van het uitzonderingsbericht.
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;
}
}
}