Je pense qu'un facteur important est de savoir qui sont vos clients.
Si votre couche de service n'est qu'une frontière architecturale entre les couches de votre propre projet et que le client de service se trouve dans le même domaine de confiance, alors il est normal de détendre les choses et de laisser des exceptions non contrôlées se propager à la couche de contrôleur ou au client de service.
Cependant, pour le code accessible au public; services qui sont consommés par un tiers ou un client, je pense qu'il est plus propre d'envelopper toutes les exceptions non vérifiées avec une exception orientée service, principalement pour des problèmes de sécurité, deuxièmement pour un couplage lâche et une abstraction propre.
Une exception de couche de données ne devrait jamais se rendre directement à l'utilisateur final d'une application Web . Il contient potentiellement des informations internes sur votre schéma, vos requêtes, les informations de numéro de ligne, les noms de variables ou de fonctions, etc. Les exceptions des utilisateurs finaux peuvent être filtrées dans un paramètre sécurisé.
Un client de service externe n'est pas concerné par vos détails d'implémentation et ne peut pas gérer les exceptions non contrôlées de toute façon, car il s'agit de bogues ou de problèmes environnementaux. Dans les applications sécurisées, les erreurs de base de données ne sont tout simplement pas suffisamment sécurisées pour se propager, OracleException - ORA-01234 - ...
ce qui pourrait être la troisième table qui a été insérée. Le client doit être autorisé à traiter toutes les exceptions vérifiées / attendues qu'il peut gérer et à traiter tout le reste comme un rapport de bogue potentiel. Votre contrat de service doit être une abstraction atomique, cohérente et transactionnelle. S'il ne peut rien faire contre l'exception, alors la seule chose utile qui reste est de vous donner un rapport de bogue. Vous avez déjà la possibilité de consigner l'exception, alors pourquoi charger votre utilisateur final avec les détails? Votre application peut être surveillée afin que vous connaissiez déjà les exceptions non vérifiées avant que les utilisateurs ne les signalent.
Ce n'est jamais correct de manger des exceptions, je ne suis pas non plus un fan d'exceptions vérifiées, mais je préfère avoir un plan qui convient à la nature du produit dans son ensemble.