تتضمن أخطاء البرنامج عادةً: أخطاء في بناء الجملة ، وأخطاء منطقية ، وتشوهات التشغيل .
يتم تقديم ما يلي على التوالي:
1. خطأ في بناء الجملة:
وغني عن القول أنه يجب على الجميع أن يعلموا من الدراسات السابقة أنه إذا كان كود البرنامج لا يلبي المتطلبات النحوية، فسيحدث المترجم خطأ أثناء التجميع والربط، وهو أمر يسهل العثور عليه.
2. الأخطاء المنطقية:
في هذه الحالة، فهذا يعني أنه لا توجد مشكلة في التجميع، ولا توجد أخطاء، ويمكن تشغيله. ومع ذلك، فإن نتيجة الإخراج أو عملية تنفيذ البرنامج ليست كما هو متوقع ولا يمكنها تحقيق النتائج المتوقعة. ويسمى هذا النوع من الأخطاء بالخطأ المنطقي ويتطلب تصحيحًا واختبارًا مستمرًا لاكتشافه.
3. شذوذ العملية:
يشير استثناء التشغيل (الاستثناء) إلى الإنهاء غير الطبيعي للبرنامج بسبب ظروف غير متوقعة أثناء عملية التشغيل، مثل عدم كفاية الذاكرة، أو فتح ملفات غير موجودة، أو القسمة على 0، وما إلى ذلك.
الأولين نعرفهما بالفعل، والثالث هو ما سنشرحه بالتفصيل في هذا الفصل. في الظروف العادية، على الرغم من أنه لا يمكن تجنب أخطاء استثناءات البرنامج، إلا أنه يمكن توقعها وإجراء المعالجة التنبؤية لتجنب تعطل البرنامج وضمان قوة البرنامج. ويسمى هذا السلوك معالجة الاستثناء .
في الدراسات السابقة، لدينا العديد من الطرق لالتقاط الاستثناءات والتعامل معها، مثل الحكم على القيمة المرجعة لوظيفة الاستدعاء من خلال if...else، أو التحقق من البيانات الأساسية قبل تنفيذ التعليمات البرمجية، وما إلى ذلك. في حالة حدوث مشكلة، استخدم الخروج ( ) أو وظائف abort() لإنهاء البرنامج.
على سبيل المثال:
cin>>a>>b;if(b==0)//Catch Exception{cout<<Drivide0!<<endl;}else{cout<<a<</<<b<<=a/b<< نهاية؛}
كما ترون، في الدراسات السابقة، غالبًا ما نستخدم if لإصدار أحكام لالتقاط الأجزاء الرئيسية ومنعها، ومع ذلك، غالبًا ما تجعل هذه الطريقة البرنامج أقل قابلية للقراءة بسبب تقليل عدد الأحكام أثناء الاستخدام، وعندما يكون ذلك ضروريًا عند تحديد القيمة المرجعة للدالة، فإننا لا نستطيع التعامل مع تلك الوظائف التي لا تُرجع قيمة. لهذا السبب، توفر لنا لغة C++ حلاً لمعالجة الاستثناءات.