EXEMPLE - A() -> B() -> C()Est-il possible de forcer un try-catch même si les exceptions sont traitées plus haut dans la pile d'appels?
C() contient un try-catch, et les journaux simplement l'exception et continue avec l'exécution, parce que le throw;
a été commentée.
Par conséquent, le try/catch dans A() ne se déclenchera pas.
public void A(){
try{
B();
}
catch(Exception e){
//something really important
}
}
public void B(){
try{
throw new Exception("test");
}
catch(Exception e){
Log.Error($"Error - {e.InnerException}");
//throw;
}
//further code
}
est-il un mécanisme qui oblige A() prises pour capturer une exception soulevée dans l'appel pile le suivant?
La raison pour laquelle je demande est que je dois m'assurer que tous les problèmes avec un paiement sont signalés mais il doit y avoir plus de 40 tentatives d'essai dans les masses de code que B(); contient!
Aucune exception n'est levée à ce point de la pile, il n'y a donc rien à attraper. Le moyen de "forcer" un 'catch' est de lancer une exception. – David
Pourquoi 'throw' est commenté? BTW, vous pouvez utiliser C# 7.0 [filtres d'exception] (https://stackoverflow.com/a/4268291/1997232) pour enregistrer quelque chose. – Sinatr
@David l'exception est lancée dans l'essai de la méthode B, et est interceptée dans la méthode B, donc je comprends car elle n'a pas été relancée A n'est pas au courant mais je me demandais si un mécanisme existe pour le faire. –