مرحبًا بالجميع، مجتمع JavaRush. سنتحدث اليوم عن تصحيح الأخطاء: ما هو وكيفية تصحيح الأخطاء في Intellij IDEA. هذه المقالة مخصصة للأشخاص الذين لديهم بالفعل الحد الأدنى من المعرفة بـ Java Core. لن تكون هناك أطر عمل أو عمليات معقدة لنشر المكتبات. المشي السهل. لذا اجعل نفسك مرتاحًا ودعنا نبدأ!
توثيق ملف README الموجود في جذر المشروع، نقرأ: السلوك المتوقع - من جميع الزهور التي يجمع منها الرحيق (كقيمة مضاعفة )، سيتم جمع كمية من العسل تعادل نصف الكمية الرحيق المتجمع. يحتوي المشروع على الفئات التالية:
التوثيق ملف README أن الرحيق يتحول إلى عسل بنسبة 2 إلى 1:
الخاص بالوثائق يحتوي على خطأ وسيحتاج إلى التحديث. لنقم بتحديث ملف README:
مركز JavaRush بمظهر ذكي :)
لماذا تحتاج التصحيح؟
دعونا نوضح الأمر على الفور: لا يوجد كود بدون أخطاء... هكذا تعمل الحياة. لذلك، لا ينبغي لنا أن نتراخى على الفور ونتخلى عن كل شيء إذا لم يعمل الكود كما توقعنا. ولكن ماذا تفعل؟ بالطبع، يمكنك التوجيهSystem.out.println
حيثما كان ذلك ممكنًا ثم تصفح المخرجات في الجهاز على أمل أن تتمكن من العثور على خطأ. ومع ذلك، لا يزال هذا ممكنًا... وهم يفعلون ذلك، ويفعلونه بعناية باستخدام التسجيل (يمكنك القراءة عنه هنا ). ولكن إذا كان من الممكن تشغيل التعليمات البرمجية على الجهاز المحلي، فمن الأفضل استخدام Debug . أود أن أشير على الفور إلى أننا سننظر في هذه المقالة في تصحيح أخطاء المشروع داخل Intellij IDEA. إذا كنت مهتمًا بالقراءة حول تصحيح الأخطاء عن بُعد، فإليك مقالًا من مصدرنا .
ما هو التصحيح
تصحيح الأخطاء هو عملية تصحيح (فحص) التعليمات البرمجية، عندما يمكنك أثناء تنفيذها التوقف في مكان معين ومشاهدة تقدم التنفيذ. فهم حالة البرنامج في مكان معين. إنه تمامًا كما لو كان بإمكانك إيقاف الحياة والنظر إلى كل شيء من الخارج. رائع، أليس كذلك؟ هدفنا هو أن نتعلم بسرعة وسهولة كيفية تصحيح أخطاء التطبيقات باستخدام بيئة التطوير المفضلة لدينا، Intellij IDEA.ما تحتاجه لبدء التصحيح
أقدم نصيحة مجانية: أثناء قراءة المقال، افعل كل ما سيتم وصفه هنا، لحسن الحظ، هناك كل شيء لهذا الغرض. ماذا تحتاج:- إصدار بيئة تطوير Intellij IDEA 2019.3.1 والإصدارات الأحدث. وفي حالة عدم وجوده لدى شخص ما، فإليك الرابط حيث يمكنك تنزيله. قم بتنزيل إصدار المجتمع لأن هذا هو ما سأستخدمه.
- استنساخ المشروع من GitHub واستيراده عبر IDEA.
القليل من النظرية...أعدك :D
لبدء التصحيح قليلاً، تحتاج إلى فهم ماهية نقطة التوقف وفهم بعض مفاتيح التشغيل السريع التي تحتاجها للبدء. BreakPoint هي علامة خاصة تعرض الموقع أو الحالة التي يجب أن يتوقف التطبيق عندها. يمكنك تعيين نقطة توقف إما عن طريق النقر بزر الماوس الأيسر على الشريط الجانبي الأيسر، أو عن طريق النقر على موقع الرمز والضغط على Ctrl + F8 . تأتي نقاط التوقف في ثلاثة أنواع: علامة الخط، وعلامة المتغير، وعلامة الطريقة. تبدو هكذا:-
في كل سطر:
إذا كان التعبير يحتوي على لامدا، فإن IDEA تقدم لك خيارًا - لوضع التعبير على السطر بأكمله أو على وجه التحديد في لامدا:
-
لكل طريقة:
-
لكل فصل
- Bee.java:24 - في فئة Bee على السطر 24
- Main.java:14 - في الفئة الرئيسية على السطر 14
دعنا نذهب، دعنا نقتحم براري التصحيح
نظرًا لأنني مربي نحل وراثي، فقد أنشأت مشروعًا من أجل عرض تصحيح الأخطاء الذي يصف عملية جمع الرحيق بواسطة النحل ومعالجة الرحيق وتحويله إلى عسل والحصول على العسل من الخلية. بناءً على- النحلة - نحلة عاملة عادية؛
- BeeQueen - ملكة النحل.
- خلية النحل - خلية النحل.
- HoneyPlant - نبات العسل الذي يتم جمع العسل منه؛
- رئيسي - حيث
public static void main()
توجد الطريقة التي يبدأ بها المشروع.
main()
، اتضح أنه لا يتم حساب كمية العسل فحسب، بل يظهر خطأ أيضًا... أنت بحاجة إلى إلقاء نظرة على الخطأ هناك. من تتبع المكدس في الزاوية اليمنى السفلى، يمكننا أن نرى أنه في HoneyPlant.java:20
RuntimeException، تم طرح RuntimeException: هذه هي حالتنا بالضبط: هناك RuntimeException، فلنقم بإضافة بحث عن مثل هذا الاستثناء، كما هو موضح أعلاه، وقم بتشغيل main()
الطريقة في وضع التصحيح. للقيام بذلك، انقر فوق سهم المثلث الأخضر في Intellij IDEA قبل الطريقة main()
: وسنحصل على البرنامج المتوقف في الوقت الحالي قبل تشغيل الاستثناء مع هذا الرمز للحصول على معلومات كاملة، تحتاج إلى البحث في قسم التصحيح. يحتوي على متغيرات ، والتي تعرض جميع المتغيرات المتوفرة في هذا الجزء من التطبيق:
- الرحيق = 1.0؛
- سعة الرحيق = -1.0.
if ( nectar == 0 ) {
return 0;
}
لكن المشكلة هي أنه يتم التحقق من المتغير الخطأ... وهذا خطأ في الكود. بدلاً من التحقق من قيمة الرحيق في الزهرة، الموجودة في متغير nectarCapacity ، يتحقق البرنامج من قيمة الرحيق الذي يأتي في الطريقة وهو الكمية التي يريدون أخذها من الرحيق. ومن هنا، الخطأ الأول! لذلك، نضعها بشكل صحيح ونحصل على التعبير:
if ( nectarCapacity == 0) {
return 0;
}
بعد ذلك، نقوم بتشغيل main()
الطريقة في الوضع العادي (Run `Main.main()`)
ولم يعد هناك أي خطأ، البرنامج يعمل: التطبيق يعمل ويعطي الجواب: "تم إنتاج 33.0 عسل بواسطة 7 نحلات من نباتين عسل" سيكون كل شيء على ما يرام، ولكن الجواب هو خطأ... كل ذلك لأنه مكتوب في ## Documentation
Presentation based on honey getting process.
**Note**: 1 honey point = 2 nectar points
من الطريقة الرئيسية يمكن ملاحظة أن هناك نباتين من العسل، 30 و 40 وحدة من الرحيق على التوالي، لذا في النهاية يجب أن تحصل على 35 وحدة من العسل. ويكتب ذلك 33. أين ذهبت الوحدتان الأخريان؟... الآن سنكتشف ذلك! للقيام بذلك، نحتاج إلى وضع نقطة توقف في الطريقة Main.main()
على السطر رقم 28، حيث يتم تنفيذها beeHive.populateHoney()
وتشغيل main
الطريقة في وضع التصحيح: دعونا نلقي نظرة فاحصة على هذه النقطة. توقف البرنامج قبل تنفيذ السطر 28. في الأسفل نرى قسم التصحيح، الذي يصف جميع المعلومات الموجودة على التطبيق قيد التشغيل. يحتوي جزء المتغيرات، كما ذكرنا سابقًا، على كافة المتغيرات والكائنات التي يمكن الوصول إليها من هذا الجزء من التطبيق. جزء الإطارات يوضح الخطوات التي يمر بها التطبيق، يمكنك الاطلاع على الخطوة السابقة والحصول على كافة البيانات المحلية. لكي يستمر البرنامج في العمل، يمكنك الضغط على F9 أو الأيقونة الخضراء، كما هو موضح أدناه: لإيقاف البرنامج، عليك النقر على المربع الأحمر: لإعادة تشغيل التطبيق في وضع التصحيح، تحتاج إلى النقر على السهم: بعد ذلك، للتنقل خطوة بخطوة عبر التطبيق، يمكنك استخدام مفتاحين:
- F8 - قم بالاطلاع على قسم من التعليمات البرمجية ولا تدخل في الأساليب الداخلية؛
- F7 - انتقل إلى قسم من التعليمات البرمجية وأدخل الطرق الداخلية.
beeHive.populateHoney()
، نحتاج إلى الضغط على F7، وسننتقل إلى ما يلي: بعد ذلك، ننتقل إلى وضع التصحيح باستخدام F8 باستخدام هذه الطريقة حتى النهاية ونصف ما يحدث في هذه الطريقة:
- السطر 25 - يتم استخدام Stream API لجمع العسل من جميع النحل؛
- السطر السادس والعشرون - يضاف العسل إلى الموجود.
- السطر السابع والعشرون - تم تخصيص وحدتين من العسل للملكة؛
- السطر الثامن والعشرون - تتم إزالة هاتين الوحدتين من إجمالي كمية العسل؛
- السطر 29 - الملكة تأكل هذا العسل.
## Documentation
Presentation based on honey getting process.
**Note**:
* 1 honey point = 2 nectar points
* 2 honey point queen bee eats every time when beehive populates the honey.
وهذا كل شيء: تم إصلاح جميع الأخطاء التي تم العثور عليها، ويمكننا الاستمرار بهدوء في شرب القهوة وقراءة المقالات على لخص
في هذا المقال اكتشفنا أن:- لا يوجد عمل بدون أخطاء وتصحيح الأخطاء طريقة رائعة لحلها؛
- ما هي نقطة التوقف وما هي أنواعها؟
- كيفية تكوين نقطة توقف الاستثناء؛
- كيفية التنقل في وضع التصحيح.
مقال للقراءة
- المشروع المستخدم في المقال
- IntelliJ IDEA وDebug: ليس الغوص، بل الغطس
- الحقيقة المرة عن البرمجة...
- الوثائق الرسمية
- أنواع نقاط التوقف. الوثائق الرسمية
GO TO FULL VERSION