C# · Intermediário · Inglês · Técnico
exception filter
Cláusula when em um catch que decide se o bloco trata a exceção. Se for falsa, a exceção segue propagando, e o filtro roda antes de a pilha ser desfeita.
Onde usar
Aparece ao capturar só um caso específico de uma falha, como repetir apenas enquanto há tentativas, ou ao registrar a exceção sem pegá-la. Preserva a stack trace original e permite inspecionar o estado no depurador.
Em código
int tentativa = 1;
try { throw new IOException(); }
catch (IOException) when (tentativa < 3)
{
Console.WriteLine("tenta de novo");
}Exemplos
Use an exception filter instead of catching and rethrowing.
Use um exception filter em vez de capturar e relançar.
The filter only catches while we still have retries.
O filtro só captura enquanto ainda temos tentativas.
Cuidado
Não coloque efeitos colaterais pesados no filtro nem lance exceção dentro dele: exceções no filtro são engolidas e tratadas como falso.
Sinônimos
cláusula when