Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Sie verwenden das when Kontextschlüsselwort, um eine Filterbedingung in den folgenden Kontexten anzugeben:
- In einer Catch-Klausel einer
try-catchodertry-catch-finallyAnweisung. - Als Case Guard in der
switchAnweisung. - Als Fallschutz im
switchAusdruck.
when in einer Catch-Klausel
Das when Schlüsselwort kann in einer Catch-Klausel verwendet werden, um eine Bedingung anzugeben, die für den Handler für eine bestimmte auszuführende Ausnahme wahr sein muss. Die Syntax lautet:
catch (ExceptionType [e]) when (expr)
dabei handelt es sich um einen Ausdruck, der zu einem booleschen Wert ausgewertet wird. Wenn er zurückgibt true, wird der Ausnahmehandler ausgeführt; wenn falsedies nicht der Fall ist.
Ausnahmefilter mit dem when Schlüsselwort bieten mehrere Vorteile gegenüber herkömmlichen Ausnahmebehandlungsansätzen, einschließlich besserer Debuggingunterstützung und Leistungsvorteile. Eine ausführliche Erläuterung dazu, wie Ausnahmefilter den Aufrufstapel beibehalten und das Debuggen verbessern, finden Sie unter Ausnahmefilter im Vergleich zur herkömmlichen Ausnahmebehandlung.
Im folgenden Beispiel wird das when Schlüsselwort verwendet, um Handler für einen HttpRequestException abhängigen Text der Ausnahmemeldung bedingt auszuführen.
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;
}
}
}