ExpertiDict

C# · Intermediário · Inglês · Técnico

exception filter

/ɪkˈsɛpʃən ˈfɪltɚ/substantivo

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

Veja também

Todos os termos de C#