C++ حاول الالتقاط أخيرًا

C Hawl Alaltqat Akhyra A



يوفر C++ طريقة 'محاولة الالتقاط' لمعالجة الاستثناءات. عند حدوث استثناء في برنامج C++، تساعد أساليب 'محاولة الالتقاط' هذه في تحويل التحكم من جزء من كود البرنامج إلى الجزء الآخر. الاستثناء هو خلل يظهر أثناء تشغيل البرنامج. عندما يحدث موقف غير عادي، مثل محاولة القسمة على صفر، أثناء تنفيذ البرنامج، يتم ظهور استثناء C++ ونتعامل مع هذا الموقف ببساطة عن طريق استخدام طريقة 'try-catch' في أكوادنا. يحتوي على ثلاث كلمات رئيسية: 'حاول'، و'التقاط'، و'رمي'. يتم استخدام الكلمة الأساسية 'throw' لطرح الاستثناء في أجزاء التعليمات البرمجية الأخرى. برمجة C++ لا تسهل علينا استخدام الكلمة الأساسية 'أخيرًا'، ولكن يمكننا استخدام الكلمات الرئيسية 'try' و'catch' و'throw' في أكواد C++.

مثال 1:

يتم تضمين 'iostream' هنا، وهو الملف الرأسي الذي يتم فيه الإعلان عن العديد من الوظائف. نحن نستخدم هذه الوظائف التي تم الإعلان عنها في ملف الرأس هذا في الكود الخاص بنا، لذلك قمنا بتضمين ملف الرأس هذا. بعد ذلك، لدينا 'std' الذي تم وضعه هنا حيث تم تعريف وظائف مثل 'cin' و'cout' فيه أيضًا. لا نحتاج إلى كتابة 'std' مع كل هذه الوظائف إذا أضفنا 'مساحة الاسم std' في بداية الكود الخاص بنا. بعد ذلك، يتم استدعاء الوظيفة 'main()' هنا والتي يشار إليها أيضًا باسم رمز برنامج التشغيل لبرنامج C++.

بعد ذلك، نستخدم الكلمة الأساسية 'try' هنا حيث نقوم بتهيئة 'my_num1' بالقيمة '35'. إنه متغير نوع البيانات 'int' هنا. الآن، نضع هذا المتغير داخل 'if' ونضع شرطًا ينص على أن 'my_num1' يجب أن يكون أكبر من أو يساوي '98'. إذا تم استيفاء الشرط المحدد، فإنه يتحرك للأمام داخل 'if' وينفذ العبارة المكتوبة هنا. نستخدم 'cout' ونقوم بإدراج رسالة لعرضها عند استيفاء الشرط.







بعد ذلك، نستخدم الكلمة الأساسية 'throw' بعد وضع كلمة 'else'. في هذه الكلمة الرئيسية 'رمي'، نقوم بتمرير 'my_num1' كمعلمة. نضيف الجزء 'الصيد' أدناه. نقوم بإدخال 'my_num2' كمعلمة لـ 'catch()' ثم نستخدم 'cout' مرة أخرى داخل جزء 'catch' هذا. يتم تنفيذ هذا الجزء فقط عند حدوث استثناء في الجزء 'المحاولة'.



الكود 1:



#تشمل
استخدام مساحة الاسم الأمراض المنقولة جنسيا ;
كثافة العمليات رئيسي ( ) {
يحاول {
كثافة العمليات my_num1 = 35 ;
لو ( my_num1 >= 98 ) {
cout << 'تم منح الوصول هنا.' ;
} آخر {
يرمي ( my_num1 ) ;
}
}
يمسك ( كثافة العمليات my_num2 ) {
cout << 'تم رفض الوصول هنا.' << endl ;
cout << 'الرقم هو: ' << my_num2 ;
}
يعود 0 ;
}

انتاج:
الرقم الذي أدخلناه هو '35' وهو أقل من '98'. لذلك، يحدث الاستثناء هناك ويتم عرض الجزء 'catch()'. تم رفض الوصول إلى الجزء 'المحاولة'.





مثال 2:

نضع ملف الرأس 'iostream' هنا و'مساحة الاسم القياسية'. بعد ذلك، نقوم بإنشاء دالة 'division()' حيث نضع فيها معلمتين هما 'البسط' و'المقام' لنوع البيانات 'int'. لقد قمنا بتعيين نوع بيانات وظيفة 'التقسيم' هذه على 'مزدوج'.



ونضيف أسفل ذلك 'if()' التي نضيف فيها شرط أن المقام يساوي صفرًا. بعد ذلك، نستخدم الكلمة الأساسية 'رمي' ونكتب رسالة هناك. يتم عرض هذه الرسالة عند حدوث الاستثناء في هذا الرمز وفقًا للشرط. أسفل هذا، نستخدم الكلمة الأساسية 'return' التي نضع فيها 'البسط/المقام'. لذلك، يتم إرجاع نتيجة القسمة. الآن، يتم استدعاء الدالة 'main()'.

بعد ذلك، تتم تهيئة 'num1' و'num2' كمتغيرين 'int' وتعيين '89' و'0' لهما على التوالي. بعد ذلك، نقوم بتهيئة 'نتيجة' نوع البيانات 'المزدوج'. هنا، نستخدم الكلمة الأساسية 'محاولة'. في هذا الجزء، نضيف هذا المتغير 'النتيجة' ونخصص دالة 'division()' لهذا المتغير. نقوم بتمرير معلمتين لهذه الوظيفة: 'num1' و'num2'. أسفل هذا نعرض 'النتيجة' التي نحصل عليها بعد تطبيق الدالة 'division()'. بعد ذلك، نستخدم أيضًا 'catch' ونضع 'const char* msg' لعرض الرسالة التي أضفناها سابقًا.

الكود 2:

#تشمل
استخدام مساحة الاسم الأمراض المنقولة جنسيا ;
مزدوج قسم ( كثافة العمليات البسط, كثافة العمليات المقام - صفة مشتركة - حالة ) {
لو ( المقام - صفة مشتركة - حالة == 0 ) {
يرمي 'القسمة على الصفر غير ممكنة هنا!' ;
}
يعود ( البسط / المقام - صفة مشتركة - حالة ) ;
}
كثافة العمليات رئيسي ( ) {
كثافة العمليات رقم 1 = 89 ;
كثافة العمليات رقم 2 = 0 ;
مزدوج نتيجة = 0 ;
يحاول {
نتيجة = قسم ( رقم 1، رقم 2 ) ;
cout << نتيجة << endl ;
} يمسك ( مقدار ثابت شار * رسالة ) {
cerr << رسالة << endl ;
}
يعود 0 ;
}

انتاج:
الرقم الذي أدخلناه سابقًا كمقام هو '0'. لذلك، يحدث الاستثناء في الكود ويعرض الرسالة المحددة.

مثال 3:

يتم إنشاء وظيفة 'الضرب ()' هنا حيث نضع 'القيمة' و'المضاعف' كمعلمات لنوع البيانات 'int'. ثم نستخدم 'if' حيث نضيف شرطًا مضاعفًا يساوي صفرًا. ثم يتم وضع 'رمي' حيث نضيف عبارة. ثم لدينا 'العودة' حيث نضع متغيرات 'القيمة * المضاعف' التي أعلنا عنها سابقًا. لذا، فإنها تُرجع نتيجة الضرب هنا.

بعد ذلك، نسمي 'main()' حيث نعلن عن 'قيمة int1' و'قيمة int2' بقيمتي '34' و'0' على التوالي. يتم أيضًا الإعلان عن 'int m_res' ثم يتم استدعاؤها هنا لوظيفة 'multiplication ()'. بعد تنفيذ هذه الوظيفة، يتم الآن حفظ النتيجة في المتغير 'm_res' ومن ثم عرضها. بعد ذلك، نستخدم وظيفة 'catch' وأدخل 'const char* msg' لعرض الرسالة التي أضفناها سابقًا في جزء 'throw'.

الكود 3:

#تشمل
استخدام مساحة الاسم الأمراض المنقولة جنسيا ;
مزدوج عمليه الضرب ( كثافة العمليات قيمة ، كثافة العمليات المضاعف ) {
لو ( المضاعف == 0 ) {
يرمي 'نحن لا نضرب القيمة بالصفر!' ;
}
يعود ( قيمة * المضاعف ) ;
}
كثافة العمليات رئيسي ( ) {
كثافة العمليات القيمة1 = 3. 4 ;
كثافة العمليات القيمة2 = 0 ;
كثافة العمليات m_res ;
يحاول {
m_res = عمليه الضرب ( القيمة 1، القيمة 2 ) ;
cout << m_res << endl ;
} يمسك ( مقدار ثابت شار * رسالة ) {
cerr << رسالة << endl ;
}
يعود 0 ;
}

انتاج | :
نظرًا لأن القيمة التي أدخلناها مسبقًا تحتوي على '0' كمضاعف، فإن الكود به استثناء يؤدي إلى عرض الإشعار هنا.

مثال 4:

هنا، نقوم ببناء الدالة 'multiply()' وتمرير 'number1' و'number2' كمعلمات لنوع البيانات 'int'. بعد ذلك، نستخدم عامل التشغيل 'if' لإضافة شرط إليه وهو مضاعف أقل من أو يساوي الصفر. بعد ذلك، يتم إضافة البيان حيث من المفترض أن يكون 'رمي'. ثم يتم إرجاع نتيجة الضرب في قسم 'الإرجاع' حيث نقوم بإدخال المتغير 'number1 * number2' الذي أعلنا عنه سابقًا.

بعد ذلك، نقوم باستدعاء الدالة 'main()' وتعيين القيمتين '34' و'12' إلى 'int newNumber1' و'int newNumber2' على التوالي. هنا، يتم استدعاء الدالة 'multiply()' بعد إعلان 'int mResult'. الآن، يتم تخزين نتيجة هذه الوظيفة في المتغير 'mResult' ويتم عرضها على النحو التالي. نستخدم بعد ذلك وظيفة 'catch' ونضيف 'const char* msg' لعرض الرسالة التي كتبناها في قسم 'throw'.

الكود 4:

#تشمل
استخدام مساحة الاسم الأمراض المنقولة جنسيا ;
مزدوج تتضاعف ( كثافة العمليات رقم 1 , كثافة العمليات رقم 2 ) {
لو ( رقم 2 <= 0 ) {
يرمي 'نحن لا نضرب القيمة بصفر أو بقيمة سلبية!' ;
}
يعود ( رقم 1 * رقم 2 ) ;
}
كثافة العمليات رئيسي ( ) {
كثافة العمليات رقم جديد1 = 3. 4 ;
كثافة العمليات رقم جديد2 = 12 ;
كثافة العمليات mResult ;
يحاول {
mResult = تتضاعف ( رقم جديد 1، رقم جديد 2 ) ;
cout << 'نتيجة الضرب هي' << mResult << endl ;
}
يمسك ( مقدار ثابت شار * رسالة ) {
cerr << رسالة << endl ;
}
يعود 0 ;
}

انتاج:
القيمة التي نضيفها هي '12' التي نضيف عليها الشرط. لذلك، يتم تنفيذ الدالة 'multiply()' لأن الشرط غير صحيح. يتم عرض نتيجة الضرب. يتم تنفيذ الجزء 'المحاولة' هنا.

خاتمة

تتم دراسة مفهوم 'محاولة الالتقاط' والأكواد الموجودة في هذا الدليل بالتفصيل. لقد استكشفنا مفهوم 'محاولة الالتقاط' بدقة وأظهرنا كيف يعمل في برمجة C++. لقد حددنا أن مصطلح 'رمي' ينشئ استثناءً عند العثور على خطأ يتيح لنا كتابة الكود الفريد الخاص بنا. باستخدام تعبير 'catch'، يمكننا تحديد كتلة من التعليمات البرمجية ليتم تشغيلها إذا ظهر استثناء في الجزء 'try'.