Errors Başlangıç

Supplier olmadan Optional.orElseThrow()

get() için daha net ve niyeti açıklayan bir alternatif olarak Optional.orElseThrow() kullanın.

✕ 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();
Bu kodda bir sorun mu gördünüz? Bize bildirin.
📖

Kendini belgeleyen

orElseThrow(), yokluğun beklenmedik olduğunu açıkça belirtir.

🔒

get()'ten kaçınır

Statik analiz araçları get()'i riskli olarak işaretler; orElseThrow() deyimseldir.

Daha az şablon kod

Varsayılan NoSuchElementException için supplier geçirmeye gerek yoktur.

Eski Yaklaşım
get() veya orElseThrow(supplier)
Modern Yaklaşım
orElseThrow()
JDK'dan itibaren
10
Zorluk
Başlangıç
Supplier olmadan Optional.orElseThrow()
Mevcut

JDK 10'dan itibaren kullanılabilir (Mart 2018).

Optional.get(), başarısızlık olasılığını gizlediği için yaygın biçimde kötü uygulama olarak kabul edilir. Java 10'da eklenen argümansız orElseThrow(), tam olarak aynı şeyi yapar ama niyeti açık kılar: geliştirici bir değer bekler ve yoksa istisna ister.

Paylaş 𝕏 🦋 in