Optional.orElseThrow() sem supplier
Use Optional.orElseThrow() como alternativa mais clara e expressiva ao get().
Comparação 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();
Viu um problema com este código? Nos avise.
Por que a forma moderna ganha
Autodocumentado
orElseThrow() sinaliza claramente que a ausência é inesperada.
Evita get()
Ferramentas de análise estática marcam get() como arriscado; orElseThrow() é idiomático.
Menos boilerplate
Não é necessário passar um supplier para a NoSuchElementException padrão.
Abordagem Antiga
get() ou orElseThrow(supplier)
Abordagem Moderna
orElseThrow()
Desde o JDK
10
Dificuldade
Iniciante
Suporte JDK
Optional.orElseThrow() sem supplier
Disponível
Disponível desde o JDK 10 (março de 2018).
Como funciona
O Optional.get() é amplamente considerado um code smell porque oculta a possibilidade de falha. O orElseThrow() sem argumentos, adicionado no Java 10, faz exatamente a mesma coisa, mas torna a intenção explícita — o desenvolvedor espera um valor e quer uma exceção se estiver ausente.
Documentação Relacionada