Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Gebruik het when contextuele trefwoord om een filtervoorwaarde op te geven in de volgende contexten:
- In een catch-component van een
try-catchoftry-catch-finallyinstructie. - Als case guard in de
switchverklaring. - Als case guard in de
switchexpressie.
De C#-taalreferentiedocumenten beschrijven de meest recent uitgebrachte versie van de C#-taal. Het bevat ook de eerste documentatie voor functies in openbare previews voor de aanstaande taalrelease.
De documentatie identificeert alle functies die voor het eerst zijn geïntroduceerd in de laatste drie versies van de taal of in de huidige openbare previews.
Aanbeveling
Raadpleeg het artikel over de versiegeschiedenis van de C#-taal om te achterhalen wanneer een functie voor het eerst is geïntroduceerd in C#.
when in een catch-component
Gebruik het when trefwoord 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 falsedit niet het probleem is.
Uitzonderingsfilters met het when trefwoord bieden verschillende voordelen ten opzichte van traditionele methoden voor het verwerken van uitzonderingen, waaronder betere ondersteuning voor foutopsporing en prestatievoordelen. Zie Uitzonderingsfilters versus traditionele verwerking van uitzonderingen voor een gedetailleerde uitleg over hoe uitzonderingsfilters de aanroepstack behouden en foutopsporing verbeteren.
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;
}
}
}