Les meilleures pratiques: Utilisation de Java 8 en option ou lancer Exception

vin:

Java 8 a introduit OptionalAPI pour désigner des valeurs qui pourraient être nullà l' exécution. Dans les cas suivants est - il préférable de jeter une exception vérifiée ou retourner un Optionaltype de retour pour représenter le cas de bord?

Cas 1: Type de retour Optional

private Optional<Item> getItem(String itemName)
{
    for (Item item : items)
    {
        if (item.getName().equals(itemName))
            return Optional.of(item);
    }

    return Optional.empty();
}

Cas n ° 2: Lancer exception vérifiée

  private Item getItem(String itemName) throws ItemNotFound
   {
        for (Item item : items)
        {
            if (item.getName().equals(itemName))
                return item;
        }

        throw new ItemNotFound();
   }

En tant que défenseurs Martin Fowler, Optional/ motif spécial de cas est une meilleure pratique mais dans ce scénario simple de lancer une exception contrôlée fait aussi le travail.

Lequel dois-je suivrai?

Januson:

Cela se résume essentiellement à: Est-il judicieux pour ce cas d'utilisation pour l'élément à manquer?

Disons dire une application a des utilisateurs. L'utilisateur peut ajouter un numéro de téléphone à son infocomptes. Comme son numéro tendance ne doit pas être là, vous pouvez utiliser en option. numéro de téléphone est peut-être là, mais peut-être manquant. Le code client doit gérer en option / valeur nullable.

D'autre part, si je veux regarder son e-mail, ce qui est obligatoire lors de l'inscription. Ensuite, l'exception est le chemin à parcourir. Email doit être là, mais non. Ici code client fait face à l'état application non valide / utilisateur endommagé.

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=199798&siteId=1
conseillé
Classement