21 novembre 2024

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 :

Try
    ' notre bloc de code ici
Catch ex As Exception When Err.Number = 5
    ' gestion de l'erreur 5
End Try

catch …. if …

Et bien plus de jaloux, on peut faire de même en C# :

try
{
    // notre bloc de code ici
}
catch(Exception ex) if (ex.HResult == 0x80070035)
{
    // gestion du pb de chemin
}

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 :

try
{
    // notre bloc de code ici
}
catch
{
    await asyncMethodCool();
}
finally
{
    await asyncMethodSupraCool(xxx);
}

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