Visual C# 6.0 – Selecionando exceções em um bloco Try…Catch
Hoje vou mostrar o novo recurso do Visual C# 6.0 que será lançado com o Visual Studio 2015 para selecionar exceções em um bloco try…catch.
Hoje vou mostrar o novo recurso do Visual C# 6.0 que será lançado com o Visual Studio 2015 para selecionar exceções em um bloco try…catch. Para isso, estou usando a versão RC do Visual Studio 2015.
Se você conhece a linguagem VB .NET, sabe que podemos utilizar a cláusula When para selecionar exceções em um bloco try…catch. Pois bem, esse recurso também foi implementado no Visual C# em sua versão 6.0.
Apenas para lembrar a sintaxe do VB .NET:
Try
[ tryStatements ]
[ Exit Try ]
[ Catch [ exception [ As type ] ] [ When expression ]
[ catchStatements ]
[ Exit Try ] ]
[ Catch ... ]
[ Finally
[ finallyStatements ] ]
End Try
Onde a cláusula When expession tem o seguinte significado:
| When | Opcional. Uma declaração de Catch com uma cláusula de When captura exceções somente quando expression é avaliada como True. Uma cláusula When é aplicada somente após verificar o tipo de exceção, e expression pode se referir ao identificador que representa a exceção. |
| expression | Opcional. Deve ser implicitamente conversível para Boolean. Qualquer expressão que descrever um filtro genérico. Normalmente usado para filtrar por número de erro.Usado com a palavra-chave de When para especificar as condições sob as quais o erro será capturado. |
Agora o desenvolvedor C# pode fazer o tratamento de exceções usando também a cláusula When, conforme vemos no trecho de código a seguir, obtido na versão Visual Studio 20115 RC:
try
{
// Executa o codigo
//...
}
catch (SqlException ex) when (ex.Server == ".\\SQLEXPRESS")
{
Console.WriteLine("SQL Provider Error: " + ex.Message);
}
catch (Exception ex) when (ex.InnerException.ToString() == "Parameter Error")
{
Console.WriteLine("SQL Provider Error: " + ex.Message);
}
finally
{
nResultado = -1;
}
Nota: Vi alguns exemplos usando a cláusula if no lugar do When, mas na versão Release Candidate do Visual Studio 2015 somente a cláusula When funcionou.
Na figura abaixo vemos que, ao usar a cláusula if, o compilador indicou um erro de sintaxe informando que espera a cláusula When:
Dessa forma, parece que a partir da versão Release Candidate do Visual Studio 2015 a condição definida na cláusula try…catch usa a palavra reservada When.









