Opcional vs lanzar una excepción

¿Es cierto que desde Java 1.8 regresaOptional Qué objeto es más preferible que lanzar una excepción? Cada vez más veo el código así:

  public Optional<?> get(int i) {
        // do somtething
        Object result = ...
        Optional.ofNullable(result);
    }

En lugar de esto:

public Object get(int i) {
        if(i<0 || i>=size) {
            throw new IndexOutOfBoundsException("Index: " + i + ". Size: " + size);
        }
        // do somtething
        Object result = ...
        return result;
    }

¿Significa que debemos olvidar el viejo enfoque y usar el nuevo? Y dondeOptional es apropiado en absoluto?

Respuestas a la pregunta(3)

Su respuesta a la pregunta