[JAVA] Point 73: Lancer des exceptions appropriées à l'abstraction
73. Lancer des exceptions adaptées à l'abstraction
- Les exceptions jetées dans les couches inférieures peuvent sembler avoir peu à voir avec les tâches spécifiques effectuées dans les couches supérieures. De plus, les exceptions créées dans les couches inférieures peuvent affecter l'implémentation de l'API dans les couches supérieures (** pas très identifiées **). Afin d'éviter ce problème, l'exception lancée dans la couche inférieure peut être interceptée et traduite en exception dans la couche supérieure.
// Exception Translation
try {
... // Use lower-level abstraction to do our bidding
} catch (LowerLevelException e) {
throw new HigherLevelException(...);
}
- Lors de la conversion d'exceptions de bas en haut, vous devez écrire le constructeur prenant en charge le chaînage comme suit pour conserver les informations d'exception dans le bas.
// Exception Chaining
try {
... // Use lower-level abstraction to do our bidding
} catch (LowerLevelException cause) {
throw new HigherLevelException(cause);
}
- La meilleure chose à faire est d'empêcher les exceptions de se produire dans les couches inférieures en premier lieu, et d'envisager de valider les valeurs des paramètres passés à cet effet.