Skip to Sidebar Skip to Content
اقرأ-تك اقرأ-تك
ضيفنا الكريم

  • قائمة القراءة
  • تسجيل الدخول
  • الرئيسية
  • المقالات
  • خطط الاشتراك
  • - اصدارتنا
  • ورقة وقلم
  • مدونات فطين
  • شنطة مبرمج
  • النشرة الأسبوعية
  • كنوز
  • - تعرف علينا
  • من نحن
  • الشراكات
  • كتاب المحتوى
  • اكتب معنا
  • تواصل معنا
  • - بنود الخدمة
  • سياسة الخصوصية
  • الشروط والأحكام
الوسوم
  • Backend
  • Distributed Systems
  • System Design
  • Databases
  • LinkedIn
  • X
  • Facebook
  • Telegram
  • GitHub
جميع الحقوق محفوظة لمنصة اقرأ-تِك 2024©

Best Practices for Handling NullPointerException in Java

  • Mahmoud Youssef by Mahmoud Youssef
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • •
  • 22 Aug, 2024
  • •
  • 3 min read
  • Share on X
  • Share on Facebook
  • Share on LinkedIn
  • Share on Pinterest
  • Email
Best Practices for Handling NullPointerException in Java
Best Practices for Handling NullPointerException in Java
  • Java
  • Programming Language

المقدمة

واحدة من أشهر المشاكل اللي بتقابل الـ Java Developers هي الـ NullPointerExceptions ، واللي للأسف بيكون سببها واضح ، ولكن أثناء كتابة الـ Code معظمنا بيغفل عنها.

وللأسف النوع ده من المشاكل بيخلي التطبيق في الآخر يتعطل وممكن ده يؤدي بالطبع لمشاكل من ناحية الـ Customers وعشان كده ضروري جدًا نعرف ازاي نتعامل مع النوع ده من المشاكل بشكل فعال.


NullPointerException

الـ NullPointerException هي Class في الـ Java بتورث من الـ RuntimeException وده عبارة عن UnCheckedException وكنا اتكلمنا في ورقة قبل كده عن الـ Java Exceptions تقدروا تشوفوها من هنا :

Java Exceptions Cheatsheet
الـ Exception Handling من الأساسيات في تعلم أي لغة ، وده لانك وانت شغال أكيد هيقابلك سيناريوهات هتضطر تـ Throw فيها Exceptions ، واحيانًا هتلاقيهم في وشك وأنت مش عارف ليه ، فلازم تكون فاهمهم كويس وعارف تتعامل معاهم ازاي.
اقرأ-تكAlaa Elkzaz

Java Exceptions Cheatsheet

الـ NullPointerException بيحصل لما نحاول اننا نـ Access Null Reference فمثلًا لو عندنا String الـ Default بتاع اي Reference لأي Variable في الـ Java بيكون Null.

class HelloWorld {
    private static String name;
    public static void main(String[] args) {
        System.out.println("Length is: " + name.length());
    }
}

فزي ماحنا شايفين هنا في الـ Code Snippet ده ، احنا هنا عملنا Variable اسمه name وبالتالي لما جينا نحاول نطبع الـ Length بتاع الـ Variable ده ، هيضرب في وشنا NullPointerException وده لان الـ Reference ده موجود بـ Null واحنا بنحاول نـ Access Null Reference ونقوله هاتلي الـ Length على حاجة مش موجودة.

وطبعا المشاكل ممكن تكون أكتر من كده لإن احيانا بيحصلنا ده في الـ Runtime ، فلو احنا معتمدين اننا بنكلم Service أو الـ Database ومعتمدين على بيانات مثلا جاية ، فلو ما اتعاملناش معاها بحذر ، وقتها برضو ممكن يكون فيه Fields بـ Null ولما نيجي نحاول نعمل عليها أي Operation هيضرب في وشنا NullPointerException.

عشان كده احنا محتاجين نعرف ازاي نتعامل بشكل كويس مع النوع ده من المشاكل.


Standard If-Else Condition

أبسط وأسهل طريقة نعملها عشان نتجنب مشكلة الـ NullPointerException هي الـ Simple If-Else Statement واللي من خلالها هنروح نشوف الـ Value بتاعة الـ Variable اللي عاوزين نعمل عليه Operation معينة بـ Null ولا لا وبالتالي نتجنب انه يحصل مشكلة لو كان بـ Null.

class HelloWorld {
    private static String name;
    public static void main(String[] args) {
        if (name != null) { //do the job if not null
            System.out.println("Length is: " + name.length());
        } else { 
            // Handle the scenario / if it's null
            System.out.println("Length is not defined properly! "");
        }
    }
}

Equals Method

ممكن برضو كحل آخر واحنا بنقارن في الـ If-Else Statement اننا نلجأ لاستعمال الـ equals Method ودي اصلًا Method موجودة في كل الـ Objects وكل الـ Reference Types عندهم الـ Method دي.

ولكن نقطة هنا نخلي بالنا منها ان بالطبع لو نادينا الـ equals على Null Reference فاحنا كده ماستفدناش حاجة! ولكن الغرض من استعمالها هو اننا نستعملها على حاجة متأكدين انها مش بـ Null زي كده:

class HelloWorld {
    private static String name;
    public static void main(String[] args) {
        if ("eqraatech".equals(name)) {
            System.out.println("name field is equal to (eqraatech)!");
        } else {
            System.out.println("name field is null or not equal to (eqraatech)!");
        }
    }
}

فاحنا هنا اعتمدنا على ان معانا String اسمه eqraatech نقدر نعتبره Constant ضامنين انه مش بـ Null وبنقارنه بحاجة ممكن تكون Null ولا لا ، هنا ده عادي , ولكن لو عكسنا وقتها هيضرب في وشنا NullPointerException.


String.valueOf() Method

من ضمن الحاجات الجميلة اللي ممكن نستعملها هي الـ valueOf() Method في الـ String وده لإن الـ Method دي من ورا الـ Implementation بتاعها بتـ Check for Nulls ولو لقت حاجة بـ Null بترجع String اسمه "null" ودي عظيمة جدًا.

فلو مثلا احنا بنكتب في ملف معين أو بنعمل Logs ومش عاوزين نقع في مشكلة الـ NullPointerException ممكن بكل بساطة نعمل الآتي:

class HelloWorld {
    private static String name;
    public static void main(String[] args) {
        System.out.println(String.valueOf(name));
    }
}

هنلاقي ان الكلام هنا بدأ يطبع كـ "Null" بس ده String ومش هيضرب NullPointerException.


تقدروا دلوقتي تشتركوا في النشرة الأسبوعية لاقرأ-تِك بشكل مجاني تمامًا عشان يجيلكوا كل جديد بشكل أسبوعي فيما يخص مواضيع متنوعة وبشروحات بسيطة وسهلة وبجودة عالية 🚀

النشرة هيكون ليها شكل جديد ومختلف عن شكلها القديم وهنحاول انها تكون مميزة ومختلفة وخليط بين المحتوى الأساسي اللي بينزل ومفاجآت تانية كتير 🎉

Eqraatech Newsletter | Eqraatech - اقرأ-تِك | Substack
محتوى تقني متميز في مختلف مجالات هندسة البرمجيات باللغة العربية عن طريق تبسيط المفاهيم البرمجية المعقدة بشكل سلس وباستخدام صور توضيحية مذهلة. Click to read Eqraatech Newsletter, a Substack publication with hundreds of subscribers.
SubstackEqraatech - اقرأ-تِك

بفضل الله قمنا بإطلاق قناة اقرأ-تِك على التليجرام مجانًا للجميع 🚀

آملين بده اننا نفتح باب تاني لتحقيق رؤيتنا نحو إثراء المحتوى التقني باللغة العربية ، ومساعدة لكل متابعينا في انهم يوصلوا لجميع أخبار اقرأ-تِك من حيث المقالات ومحتوى ورقة وقلم والنشرة الأسبوعية وكل جديد بطريقة سريعة وسهلة

مستنينكوا تنورونا , وده رابط القناة 👇

https://t.me/eqraatechcom

Join us on Telegram Channel

Objects.requireNonNullElse Method

من ضمن المميزات اللي الـ Objects Class بتقدمها بعض الـ Utilities اللي ممكن نستعملها في اننا نكتب Maintainable و Reliable كود وبرضو بتحسن من الـ Readability بتاعة الكود بتاعنا هي الـ Objects.requireNonNullElse Method زي كده:

هذا المقال مخصص للأعضاء المنتسبين لخطط الاشتراك المدفوعة فقط

اشترك الآن وتصفح كافة المقالات المميزة واستمتع بمحتوى حصري وابق على اطلاع دائم بالتحديثات المستمرة.

اشترك الآن 🚀

هل لديك حساب؟ تسجيل الدخول

في هذا المقال
اشترك الآن واكمل قراءة المقال
قناة اقرأ-تِك على التليجرام قناة اقرأ-تِك على التليجرام

اشترك الآن بنشرة اقرأ‑تِك الأسبوعية

لا تدع أي شيء يفوتك. واحصل على أحدث المقالات المميزة مباشرة إلى بريدك الإلكتروني وبشكل مجاني!

مقالات ذات صلة

  • Dependency Injection - Flutter in Depth 5 min read

    Dependency Injection - Flutter in Depth

    Mohamed Naif Mohamed Naif • 23 Jul, 2025
    Mohamed Naif Mohamed Naif
    Flutter Developer
    • Website
  • Deep Dive into Code Quality - Beyond Bugs 5 min read

    Deep Dive into Code Quality - Beyond Bugs

    Rowan Ibrahem Rowan Ibrahem • 1 Sep, 2024
    Rowan Ibrahem Rowan Ibrahem
    Flutter Developer
    • Website
  • Java Collections Cheatsheet 1 min read

    Java Collections Cheatsheet

    Mahmoud Youssef Mahmoud Youssef • 25 Aug, 2024
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • Java Exceptions Cheatsheet 1 min read

    Java Exceptions Cheatsheet

    Alaa Elkzaz Alaa Elkzaz • 3 Aug, 2024
    Alaa Elkzaz Alaa Elkzaz
    Co-Founder & Software Engineer
    • Website
  • Completable Future join() vs. get() in Java 2 min read

    Completable Future join() vs. get() in Java

    Mahmoud Youssef Mahmoud Youssef • 8 Jul, 2024
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • Lazy Evaluation in Java Streams 2 min read

    Lazy Evaluation in Java Streams

    Mahmoud Youssef Mahmoud Youssef • 4 Jul, 2024
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • Stream FlatMap in Java with Examples 3 min read

    Stream FlatMap in Java with Examples

    Mahmoud Youssef Mahmoud Youssef • 2 Jul, 2024
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • Introduction to Java HttpClient 3 min read

    Introduction to Java HttpClient

    Mahmoud Youssef Mahmoud Youssef • 26 Jun, 2024
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • Full Guide Into Map and HashMap in Java 3 min read

    Full Guide Into Map and HashMap in Java

    Mahmoud Youssef Mahmoud Youssef • 24 Jun, 2024
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
اقرأ-تك اقرأ-تك
  • الرئيسية
  • المقالات
  • خطط الاشتراك
  • - اصدارتنا
  • ورقة وقلم
  • مدونات فطين
  • شنطة مبرمج
  • النشرة الأسبوعية
  • كنوز
  • - تعرف علينا
  • من نحن
  • الشراكات
  • كتاب المحتوى
  • اكتب معنا
  • تواصل معنا
  • - بنود الخدمة
  • سياسة الخصوصية
  • الشروط والأحكام
الوسوم
  • Backend
  • Distributed Systems
  • System Design
  • Databases
  • LinkedIn
  • X
  • Facebook
  • Telegram
  • GitHub
جميع الحقوق محفوظة لمنصة اقرأ-تِك 2024©