Nota
L'accés a aquesta pàgina requereix autorització. Pots provar d'iniciar sessió o canviar de directori.
L'accés a aquesta pàgina requereix autorització. Pots provar de canviar directoris.
Use la when palabra clave contextual para especificar una condición de filtro en los contextos siguientes:
- En una cláusula catch de una
try-catchinstrucción otry-catch-finally. - Como protección de casos en la
switchinstrucción . - Como protección de mayúsculas y minúsculas en la
switchexpresión.
La documentación de referencia del lenguaje C# cubre la versión más reciente publicada del lenguaje C#. También contiene documentación inicial sobre las características de las versiones preliminares públicas de la próxima versión del lenguaje.
La documentación identifica cualquier característica introducida por primera vez en las últimas tres versiones del idioma o en las versiones preliminares públicas actuales.
Sugerencia
Para buscar cuándo se introdujo por primera vez una característica en C#, consulte el artículo sobre el historial de versiones del lenguaje C#.
when en una cláusula catch
Use la when palabra clave en una cláusula catch para especificar una condición que debe ser true para el controlador para que se ejecute una excepción específica. 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 false, no lo hace.
Los filtros de excepciones con la when palabra clave proporcionan varias ventajas sobre los enfoques tradicionales de control de excepciones, incluidas las mejores ventajas de compatibilidad y rendimiento de depuración. Para obtener una explicación detallada de cómo los filtros de excepciones conservan la pila de llamadas y mejoran la depuración, consulte Filtros de excepciones frente al control de excepciones tradicional.
En el ejemplo siguiente se usa la when palabra clave para ejecutar condicionalmente los controladores de un HttpRequestException en función del 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;
}
}
}