Errors Iniciante

Use Optional.orElseThrow() como alternativa mais clara e expressiva ao get().

✕ 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.
📖

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
Optional.orElseThrow() sem supplier
Disponível

Disponível desde o JDK 10 (março de 2018).

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.

Compartilhar 𝕏 🦋 in