Mejor Práctica: Uso de Java 8 Opcional o excepción de lanzamiento

Vino :

Java 8 ha introducido OptionalAPI para denotar valores que podrían ser nullen tiempo de ejecución. En los siguientes casos es lo mejor para lanzar una excepción comprobada o devolver un Optionaltipo de retorno para representar caso extremo?

Caso 1: Tipo Volviendo Optional

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

    return Optional.empty();
}

Caso 2: Lanzar excepción comprobada

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

        throw new ItemNotFound();
   }

Como defensores Martin Fowler, Optional/ patrón Caso especial es una mejor práctica, pero en este escenario simple lanzar una excepción comprobada hace el trabajo también.

¿Cuál debería ser lo siguiente?

Januson:

Esto básicamente se reduce a: ¿Tiene sentido para este caso de uso para el elemento que se va perdiendo?

Digamos decir una aplicación tiene usuarios. El usuario puede añadir un número de teléfono a su información de cuenta. A medida que su número propensa no tiene que estar allí, puede utilizar opcional. número de teléfono podría estar allí, pero puede ser que falte. El código de cliente tiene que manejar Opcional valor / anulable.

Por otro lado si quiero mirar su correo electrónico, que es un sistema obligatorio durante el registro. A continuación, la excepción es el camino a seguir. Correo electrónico debe estar allí, pero no lo es. Aquí código de cliente se enfrenta aplicación inválida estado / de usuario dañado.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=199800&siteId=1
Recomendado
Clasificación