MethodA appelle un MethodB qui appelle à son tour MethodC.
Il n'y a PAS de gestion des exceptions dans MethodB ou MethodC. Mais il existe une gestion des exceptions dans MethodA.
Dans MethodC, une exception se produit.
Maintenant, cette exception est en train de bouillonner jusqu'à MethodA, qui la gère correctement.
Quel est le probleme avec ca?
Dans mon esprit, à un moment donné, un appelant exécutera MethodB ou MethodC, et lorsque des exceptions surviennent dans ces méthodes, ce que l'on obtiendra de la gestion des exceptions à l'intérieur de ces méthodes, qui consiste essentiellement en un bloc try / catch / finally au lieu de simplement laisser les bulles à l'appelé?
La déclaration ou le consensus autour de la gestion des exceptions est à lancer lorsque l'exécution ne peut pas continuer pour cette raison - une exception. Je comprends ça. Mais pourquoi ne pas capturer l'exception plus haut dans la chaîne au lieu d'avoir des blocs try / catch tout en bas.
Je le comprends quand vous devez libérer des ressources. C'est une toute autre affaire.
try-catch
bloc n'est nécessaire .
Result<T>
type (un type qui stocke le résultat d'un calcul ou une erreur) et de le renvoyer à partir de vos fonctions de lancement. La propagation d'une erreur dans la pile impliquerait de lire chaque valeur de retour, de vérifier si c'est une erreur et de renvoyer une erreur si c'est le cas.