25 mai 2026

Filtres d’Exceptions et code asynchrone dans les catch

Avec l’arrivée de Visual Studio 2015, on va enfin pouvoir se mettre au C#6 du Framework 4.6. La gestion des exceptions Try … catch … finally s’enrichi avec la possibilité de filtrer les exceptions. C’est nouveau en C# mais ça existe en VB.NET.
Voici ce qu’on peut faire en VB.NET :

[cc lang= »vbnet » escaped= »true » width= »400″ nowrap= »0″ line_numbers= »0″ theme= »vsdark »]
Try
‘ notre bloc de code ici
Catch ex As Exception When Err.Number = 5
‘ gestion de l’erreur 5
End Try
[/cc]

catch …. if …

Et bien plus de jaloux, on peut faire de même en C# :
[cc lang= »csharp » escaped= »true » width= »400″ nowrap= »0″ line_numbers= »0″ theme= »vsdark »]
try
{
// notre bloc de code ici
}
catch(Exception ex) if (ex.HResult == 0x80070035)
{
// gestion du pb de chemin
}
[/cc]

Auparavant dans le catch(Exception ex), il suffisait de mettre un bloc de if … else if … else et cela remplissait quasiment le même rôle.

code asynchrone dans les catch

Finalement ça pouvait être naturel de faire ça auparavant mais c’est possible que maintenant :
[cc lang= »csharp » escaped= »true » width= »400″ nowrap= »0″ line_numbers= »0″ theme= »vsdark »]
try
{
// notre bloc de code ici
}
catch
{
await asyncMethodCool();
}
finally
{
await asyncMethodSupraCool(xxx);
}
[/cc]

Avant il aurait fallu ruser en utilisant par exemple une variable et après le finally tester la variable et appeler notre méthode asynchrone. Mais ça, c’était avant.

Laisser un commentaire