Nous sommes aux prises avec une politique de correctement gérer les exceptions dans notre application. Voici nos objectifs pour elle (résumé):
- Ne traiter que les exceptions spécifiques.
- Gérer seules exceptions que vous pouvez corriger
- Connecter qu'une seule fois.
Nous sommes venus avec une solution qui implique un générique Spécifique de l'Application de l'Exception et de la marche comme ça dans un morceau de code:
try {
// Do whatever
}
catch(ArgumentNullException ane)
{
// Handle, optinally log and continue
}
catch(AppSpecificException)
{
// Rethrow, don't log, don't do anything else
throw;
}
catch(Exception e)
{
// Log, encapsulate (so that it won't be logged again) and throw
Logger.Log("Really bad thing", e.Message, e);
throw new AppSpecificException(e)
}
Toute exception est enregistré et s'est ensuite tourné vers un AppSpecificException de sorte qu'il ne sera pas enregistré de nouveau. Il finira par atteindre la dernière station de gestionnaire d'événements qui auront à traiter avec elle si elle a pour.
Je n'ai pas tellement d'expérience avec la gestion des exceptions modèles... Est-ce une bonne façon de résoudre nos objectifs? Les principaux inconvénients ou big red mises en garde?
Remarque: l'Un des inconvénients de cette est que, après la première prise de vous perdre la capacité de gérer une exception spécifique (si vous appelez une méthode qui appelle une autre méthode et de la deuxième, déclenche une exception vous n'êtes pas capable de le gérer) mais je l'ai trouvé, je n'ai jamais fait ça de toute façon ... je n'gérer les exceptions avec un niveau de profondeur ...