هل لاحظت java.lang.NullPointerException (NPE)؟ 8 أفضل الممارسات لتجنب وقت تشغيل NPE في Java

نشرت: 2020-10-07
هل لاحظت java.lang.NullPointerException (NPE)؟ 8 أفضل الممارسات لتجنب وقت تشغيل NPE في Java

تجنب استثناء المؤشر الفارغ في Java و Java Tips وأفضل الممارسات لتجنب NullPointerException في Java.

بصفتي مطور Java ، أنا متأكد من أنك واجهت استثناء Null Pointer Exception (NPE) بدءًا من اليوم الأول. في معظم الحالات ، يُظهر استثناء NPE تتبعًا واضحًا للمكدس الذي يشير إلى السبب الجذري لنفسه ولكن في حالة التطبيق الكبير على مستوى المؤسسة الذي لديك فيه مئات الفئات ، يصبح اكتشاف السبب الجذري الحقيقي كابوسًا.

ما هو Null Pointer Exception (NPE)؟

NullPointerException (NPE) هو استثناء يحدث عند محاولة استخدام مرجع يشير إلى عدم وجود موقع في الذاكرة (فارغ) كما لو كان يشير إلى كائن.

سيؤدي استدعاء طريقة على مرجع null أو محاولة الوصول إلى حقل مرجعي فارغ إلى تشغيل NPE. هذا هو السبب الأكثر شيوعًا.

وفقًا لـ JavaDoc ، فيما يلي الأسباب الرئيسية لـ NPE:

  • رمي null كما لو كان قيمة Throwable .
  • استدعاء طريقة المثيل لكائن null .
  • الوصول إلى حقل كائن null أو تعديله.
  • أخذ الطول null كما لو كان مصفوفة.
  • الوصول إلى فتحات القيمة null أو تعديلها كما لو كانت مصفوفة.

السؤال الحقيقي الآن هو كيف تتجنب java.lang.NullPointerException في وقت التشغيل؟ في هذا البرنامج التعليمي ، سنلقي نظرة على بعض الأمثلة التي تنشئ NPE في وقت التشغيل والخطوات التي نحتاج إلى تنفيذها لحل هذه المشكلة.

لنقم بإنشاء NPE في وقت التشغيل الأول. ألق نظرة على المثال أدناه CrunchifyNullPointerExceptionTips.java

سنقوم بإنشاء NPE 3 طرق مختلفة

  1. سيتم طرح NPE إذا كنت تحاول الوصول إلى كائن فارغ
  2. سيتم طرح NPE إذا كنت تحاول تحويل سلسلة فارغة
  3. سيتم طرح NPE إذا كنت تحاول الوصول إلى كائن فارغ أثناء تهيئة الفئة

قم بإنشاء فئة CrunchifyNullPointerExceptionTips.java

نتيجة:

حسنًا ، هناك بعض النصائح والحيل التي يمكننا استخدامها لتجنب NullPointerException في وقت التشغيل. لنلقي نظرة.

تلميح 1:

سيحاول Eclipse / IntelliJ IDE إظهار NPE في مساحة العمل. تصحيح التعليمات البرمجية الخاصة بك أثناء التطوير فقط.

تلميح مؤشر فارغ في الكسوف

تلميح 2:

أضف crunchifyI sNullorEmpty () قبل إجراء عملية على الكائن. أضف هذا إلى CrunchifyNullPointerExceptionTips.java

في أعلاه ، سيتم استبدال السطر 55 و 56 من برنامج جافا بهذا.

تلميح 3:

تحقق مما إذا كانت السلسلة null أو فارغة بعد عملية القطع ().

تلميح 4:

استخدم دائمًا Try Catch block عملية Runtime غير المنقطعة.

تلميح 5:

يُفضل Collections.emptyList() بسبب التعامل الأفضل مع الأدوية الجنيسة.

تلميح 6:

استخدم Java Assertions

التأكيد هو بيان يمكّنك من اختبار افتراضاتك حول الكود الخاص بك. على سبيل المثال ، إذا قمت بكتابة طريقة تُرجع الاسم في النظام ، فقد تؤكد أن الاسم الآخر العائد إذا كانت السلسلة خالية.

الاستخدام الأساسي للتأكيدات سيكون:

ولكن هناك مشكلة: التأكيد غير متوفر في بيئة الإنتاج ويجب ألا نستخدم التأكيد مع أي منطق أعمال.

تلميح 7:

حاول استخدام containsKey() ، و containsValue() ، contains() عمليات تحقق.

تلميح 8:

في الختام ، من الممارسات الجيدة دائمًا الاهتمام بـ NPE أثناء التطوير بدلاً من تصحيح الأخطاء في الإنتاج في وقت التشغيل. هناك عدد من النصائح والحيل الأخرى المتاحة باستخدام التعليق التوضيحي لـ Spring Framework ، Factory Pattern الكائن الفارغ وما إلى ذلك ، لكنني سأختصر هذا الآن.

سيتم نشر برنامج تعليمي جديد ربما في غضون أسبوع في هذا واحد. ابقوا متابعين.

هل تريد إضافة أي شيء إلى هذا البرنامج التعليمي أو وجدت مشكلة ، يرجى الاتصال وتقديم تعليقاتك.