when (Référence C#)

Vous pouvez utiliser le mot clé contextuel when pour spécifier une condition de filtre dans les contextes suivant :

when dans une clause catch

Le mot clé when peut être utilisé dans une clause catch pour spécifier une condition qui doit avoir la valeur « true » sur le gestionnaire pour qu’une exception spécifique s’exécute. Sa syntaxe est la suivante :

catch (ExceptionType [e]) when (expr)

expr est une expression qui prend une valeur booléenne. Si la valeur retournée est true, le gestionnaire de l’exception est exécuté ; si la valeur retournée est false, il n’est pas exécuté.

L’exemple suivant utilise le mot clé when afin d’exécuter conditionnellement des gestionnaires pour une exception HttpRequestException selon le texte du message d’exception.

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

Voir aussi