Et si elles ont un autre résultat naturel?
Non, il faut a la place tester et copier explicitement.... avec cette technique, pas besoin de remonter les exceptions.
En passant c'est un mécanisme donnant un complément d'information sur une erreur, pas un mécanisme de signalement d'erreur.
En pratique il y a plus de problèmes graves dus aux erreurs non traitées quand il le faudrait que de gêne due au traitement obligatoire mais inutiles des erreurs.. simplification d'utilisation de la classe : l'utilisateur de cette classe ne s'occupe des erreurs que s'il en a besoin.
+1
C'est le chemin d'exécution passant par elles qui en général ne doit être pris qu'exceptionnellement. Ce qui est normalement le cas pour la gestion des erreurs.
Les exceptions sont avant tout un mécanisme de contrôle du flux d'exécution, comme l'appel de fonction, return, if, switch, goto,... en fait c'est un goto non local avec le label destination qui est déterminé par l'imbrication dynamique des appels. Ce n'est qu'accessoirement que c'est aussi un mécanisme de transport d'information.
Étant un mécanisme par essence non local, il est bien adapté au traitement des erreurs qui sinon a tendance à encombrer le flux normal d'exécution, au point que parfois il ne soit plus visible. Mais cela ne veut pas dire que ce soit le seul mécanisme adapté pour transferer le point d'exécution en cas d'erreur.
J'ai des doutes sur le fait que les alternatives conduisent un code généré plus compact.Comme il faut appeler les destructeurs sur les instances placées en pile lors de la descente liée à une levée d'exception le code produit pas le compilateur est beaucoup plus grand que sans (option de compilation).
Partager