Optional.orElseThrow() sin supplier
Usa Optional.orElseThrow() como una alternativa más clara e intencional a get().
Comparación de Código
✕ Java 8
// Risky: get() throws if empty, no clear intent
String value = optional.get();
// Verbose: supplier just for NoSuchElementException
String value = optional
.orElseThrow(NoSuchElementException::new);
✓ Java 10+
// Clear intent: throws NoSuchElementException if empty String value = optional.orElseThrow();
¿Ves un problema con este código? Cuéntanos.
Por qué gana la forma moderna
Autodocumentado
orElseThrow() señala claramente que la ausencia es inesperada.
Evita get()
Las herramientas de análisis estático marcan get() como riesgoso; orElseThrow() es idiomático.
Menos código repetitivo
No es necesario pasar un supplier para la NoSuchElementException por defecto.
Enfoque Antiguo
get() o orElseThrow(supplier)
Enfoque Moderno
orElseThrow()
Desde JDK
10
Dificultad
Principiante
Soporte JDK
Optional.orElseThrow() sin supplier
Disponible
Disponible desde JDK 10 (marzo de 2018)
Cómo funciona
Optional.get() se considera ampliamente un antipatrón porque oculta la posibilidad de fallo. El método orElseThrow() sin argumentos, añadido en Java 10, hace exactamente lo mismo pero deja clara la intención: el desarrollador espera un valor y quiere una excepción si está ausente.
Documentación Relacionada