when (Référence C#)
Vous pouvez utiliser le mot clé contextuel when
pour spécifier une condition de filtre dans les contextes suivant :
- Dans une clause catch d’une instruction
try-catch
outry-catch-finally
. - En tant que gardien de cas dans l’instruction
switch
. - En tant que gardien de cas dans l’expression
switch
.
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)
où 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;
}
}
}