when (referencia de C#)

La palabra clave contextual when se usa para especificar una condición de filtro en los siguientes contextos:

when en una cláusula catch

La palabra clave when puede usarse en una cláusula para especificar una condición que debe cumplirse para que el controlador de una excepción específica se ejecute. Su sintaxis es:

catch (ExceptionType [e]) when (expr)

donde expr es una expresión que se evalúa como un valor booleano. Si devuelve true, el controlador de excepciones se ejecuta; si devuelve false, no se ejecuta.

En el ejemplo siguiente se usa la palabra clave when para ejecutar condicionalmente controladores para una HttpRequestException según el texto del mensaje de excepción.

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

Consulte también