Errors Początkujący

Używaj Optional.orElseThrow() jako czytelniejszej alternatywy dla 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();
Widzisz problem z tym kodem? Daj nam znać.
📖

Samo-dokumentujący

orElseThrow() wyraźnie sygnalizuje, że brak wartości jest nieoczekiwany.

🔒

Unikanie get()

Narzędzia analizy statycznej flagują get() jako ryzykowny; orElseThrow() jest idiomatyczny.

Mniej boilerplate

Nie trzeba przekazywać dostawcy dla domyślnego NoSuchElementException.

Stare podejście
get() lub orElseThrow(supplier)
Nowoczesne podejście
orElseThrow()
Od JDK
10
Poziom trudności
Początkujący
Optional.orElseThrow() bez dostawcy
Dostępne

Dostępne od JDK 10 (marzec 2018)

Optional.get() jest powszechnie uważany za zapach kodu, bo ukrywa możliwość błędu. Bezargumentowy orElseThrow(), dodany w Java 10, robi dokładnie to samo, ale czyni intencję jawną — programista oczekuje wartości i chce wyjątku przy jej braku.