Bonjour,

Sur un projet de librairies, je me suis basé sur ce que dit le msdn ici et ici pour gérer les exceptions, comme : ne pas rattraper les ApplicationException et les SystemException, ni en hériter. De plus, il indique (ici) de ne pas en abuser car l'instruction throw plombe les perf... Est-ce aussi le cas des blocs try/catch/finally ???

Le dernier lien propose aussi 2 patterns (je ne sais pas si j'ai bien compris) :
- Tester-Doer pattern : consiste à vérifier chaque paramètre avant l'appel d'une méthode pour éviter de l'appeler avec un paramètre qui génèrera une exception.
- TryParse pattern : consiste à créer 2 fonctions... bref tout le monde connait, ex: int.Parse/TryParse ou DateTime.ParseExact/TryParseExact.
Y a-t-il d'autres patterns de gestion d'exception ???

J'ai tenté d'implémenter la 2nd option :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
public class MyClass
{
    public void DoSomething() { [...] }
    public bool TryDoSomething()
    {
        try { DoSomething(); return true; }
        catch { return false; }
    }
}
Mais je ne vois pas l'avantage car dans un cas l'exception est rattrapée par la méthode "appelante", dans l'autre par la méthode appelée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class MyTester
{
    public MyClass MyObject = new MyClass();
 
    public void DoSomethingTest() // cas 1
    {
        try { MyObject.DoSomething(); }
        catch { [...] } // Log error
    }
 
    public void TryDoSomethingTest() // cas 2
    {
        if (!MyObject.TryDoSomething()) [...] // Log error
    }
}
Or dans les 2 cas, une exception est lancée...
J'ai du faire une erreur, quelqu'un peut m'aider svp ?