Je veux remplacer le try/catch/finally bloquer ou de créer une nouvelle myTry/myCatch/bloquer myFinally avoir en interne une spécifique et « automatique » comportements. Par exemple pour enregistrer une exception, le développeur doit appeler explicitement la méthode Log (ex). =>try{...}catch(Ex ex){ **Log(ex)**; doSomething(); throw; }
comment écraser ou créer une nouvelle try/catch/finally .net C#
mais si le développeur oublie d'appeler le journal (ex), rien ne se passe. Je veux créer une structure capable de faire quelque chose à l'intérieur, comme le modèle de gabarit. quelque chose comme:
MyTryWithAutomaticInternalLog {
doSomething();
}
MyCatch(Exception ex){
**//Internally this stores in someplace the exception**
doSomething2(ex);
throw;
}
MyFinally {
//internally this saves how much time took the execution for example.
doSomething3();
}
Il y a d'autres options comme: 1) créer une méthode d'emballage comme MyTryWithAutomaticInternalLog(()=>{ doSomething(); }, (ex)=>{ doSomethingOnError(); },()=>{ doSomethingInfinally(); });
et à l'intérieur du MyTryWithAutomaticInternalLog avec une stratégie de modèle de modèle gérer le flux, mais encore une fois, le développeur doit se rappeler d'utiliser la méthode MyTryWithAutomaticInternalLog au lieu de la très standard try/catch/finally.
2) Évitez d'utiliser try/catch dans le code et gérer l'exception avec un motif d'injection de dépendance. Mais je veux l'éviter.
Existe-t-il d'autres options? comment puis-je écraser le bloc try/catch/finally? Si non, je vous serais reconnaissant si vous fournissez des informations techniques et des liens, car j'ai cherché sans trop de chance.
TKX
Vous voulez une journalisation automatique si et seulement si l'appelant oublie de faire le sien? Ajoutez simplement la journalisation et un moyen pour l'appelant de le supprimer.Un indicateur de système de journalisation, une propriété de classe ou un paramètre facultatif à la fonction. Modifier: vous devriez également utiliser un système de journalisation si c'est un problème réel. Log4net ou autres. Ces problèmes ont été résolus beaucoup – zzxyz