Freigeben über


wann (C#-Referenz)

Sie verwenden das when Kontextschlüsselwort, um eine Filterbedingung in den folgenden Kontexten anzugeben:

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;
        }
    }
}

Siehe auch