Errors مبتدئ

استخدم Optional.orElseThrow() كبديل أوضح وكاشف للنية عن 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();
هل ترى مشكلة في هذا الكود؟ أخبرنا.
📖

موثّقة ذاتياً

orElseThrow() تُشير بوضوح إلى أن الغياب غير متوقع.

🔒

تتجنّب get()

أدوات التحليل الثابت تُعلّم get() بأنها خطرة؛ orElseThrow() هي الأسلوب الصحيح.

كليشيه أقل

لا حاجة لتمرير مورّد للاستثناء الافتراضي NoSuchElementException.

الأسلوب القديم
get() أو orElseThrow(supplier)
الأسلوب الحديث
orElseThrow()
منذ JDK
10
الصعوبة
مبتدئ
Optional.orElseThrow() بدون مورّد
متاح

متاح منذ JDK 10 (مارس 2018).

يُعدّ Optional.get() على نطاق واسع من علامات التدهور لأنه يُخفي احتمالية الفشل. تُؤدي orElseThrow() بدون وسائط المضافة في Java 10 نفس العمل لكن مع نية صريحة: المطوّر يتوقع قيمةً ويريد استثناءً إذا كانت غائبة.

مشاركة 𝕏 🦋 in