2017-08-08 4 views
0

Je dois créer une méthode pour trouver un employé par son nom. Il y a trois solutions possibles à mettre en œuvre cela comme ci-dessous:renvoyant java.util.Optional ou throw (Checked/Unchecked) exception

  1. employé findEmployeeById (à long EMPID) jette NoSuchEmployeeCheckedException;
  2. Facultatif findEmployeeById (long empId);
  3. Employé findEmployeeById (long empId) throws NoSuchEmployeeUnCheckedException;

La première méthode renvoyant un exemple de l'employé si l'ID correspond à mon dépôt, sinon jeter une instance de contrôle exception NoSuchEmployeeCheckedException

La deuxième méthode de retour d'une instance de option de java8, alors qu'aucun jet d'exception .

La dernière méthode est similaire à la première, mais lance une instance de l'exception UnCheck NoSuchEmployeeUnCheckedException au lieu de l'exception vérifiée.

J'ai lu plusieurs articles sur StackOverFlow à propos des exceptions cochées ou non cochées. Honnêtement, je ne sais toujours pas comment les utiliser correctement.

Joshua Bloch dans "Effective Java" dit que

utilisation contrôlée des exceptions pour les conditions récupérables et des exceptions d'exécution pour les erreurs de programmation (article 58 2e édition)

  1. est le findEmployeeById une des conditions récupérables?
  2. Ai-je besoin d'utiliser l'option ou une exception de lancement?
  3. quelle est la meilleure solution?
+0

Aucune de ces réponses ne renvoie la liste des employés. La requête peut renvoyer plusieurs lignes car plusieurs employés peuvent avoir le même nom. S'il n'y a pas de correspondance renvoyer une liste vide –

+0

Ne pas besoin de prendre en compte la logique actuelle –

Répondre

0

Utilisez des exceptions pour des circonstances exceptionnelles, s'il est généralement prévu qu'aucun employé ne soit trouvé alors vous ne devriez probablement pas utiliser une exception.
Les exceptions ont également un temps d'exécution car elles doivent capturer la trace de la pile.
Dans ce cas j'utiliserais un Optional ou si plusieurs employés peuvent avoir le même nom, retourner un certain type de Collection, utiliser une collection vide si aucun employé n'est trouvé.