Gestion des Exceptions dans une librairie
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:
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:
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 ?