كتلة 'try-catch'
جزء من قسم Logic & Flow في رحلة Dart على Coddy — الدرس 39 من 65.
الآن بعد أن فهمت ما هي الاستثناءات، دعنا نتعلم كيفية التعامل معها بسلاسة باستخدام كتلة try-catch. هذه هي الأداة الأساسية التي تمنع برنامجك من الانهيار عندما يحدث خطأ ما.
تعمل كتلة try-catch من خلال تغليف الكود الذي قد يسبب مشاكل في قسم try. في حالة حدوث استثناء، وبدلاً من تعطل برنامجك، ينتقل Dart فوراً إلى قسم catch حيث يمكنك معالجة الخطأ بشكل مناسب.
try {
// كود قد يتسبب في حدوث استثناء
int number = int.parse("abc");
} catch (e) {
// كود يتم تنفيذه في حالة حدوث استثناء
print("Something went wrong: $e");
}في هذا المثال، محاولة تحويل السلسلة النصية "abc" إلى عدد صحيح ستؤدي عادةً إلى تعطل برنامجك. ومع ذلك، نظرًا لأنها مغلفة داخل كتلة try، يتم التقاط الاستثناء ومعالجته في كتلة catch بدلاً من ذلك. يحتوي المتغير e على معلومات حول الخطأ الذي حدث.
يسمح هذا النهج لبرنامجك بالاستمرار في العمل حتى عند حدوث مواقف غير متوقعة، مما يجعل الكود الخاص بك أكثر قوة وسهولة في الاستخدام بشكل كبير.
التحدي
سهلقم بإنشاء برنامج يقوم بتحويل سلاسل إدخال المستخدم إلى أرقام بأمان باستخدام كتلة try-catch. يجب أن يتعامل برنامجك مع الحالات التي قد لا يكون فيها الإدخال رقماً صالحاً ويمنع البرنامج من الانهيار.
- اقرأ إدخالاً نصياً يمثل رقماً يحتاج إلى تحويله إلى عدد صحيح (integer)
- استخدم كتلة
try-catchلمحاولة التحويل بأمان باستخدامint.parse() - إذا نجح التحويل، فقم بحساب مربع الرقم (اضربه في نفسه)
- إذا فشل التحويل وحدث استثناء، فقم بمعالجة الخطأ بلباقة
- اعرض النتيجة المناسبة أو رسالة الخطأ بالتنسيق الدقيق الموضح أدناه
على سبيل المثال، إذا كان الإدخال "5"، يجب أن يخرج برنامجك:
Processing input: 5
Conversion successful!
The square of 5 is: 25إذا كان الإدخال "abc"، يجب أن يخرج برنامجك:
Processing input: abc
Error: Cannot convert 'abc' to a number
Please enter a valid integerإذا كان الإدخال "12"، يجب أن يخرج برنامجك:
Processing input: 12
Conversion successful!
The square of 12 is: 144يجب أن يستخدم برنامجك كتلة try-catch لتغليف عملية int.parse(). في قسم try، حاول تحويل سلسلة الإدخال إلى عدد صحيح واحسب مربعه. في قسم catch، قم بمعالجة أي استثناء يحدث أثناء التحويل واعرض رسالة خطأ مناسبة. يجب أن يستمر البرنامج في العمل بشكل طبيعي بغض النظر عما إذا كان التحويل قد نجح أم فشل.
ورقة مرجعية
استخدم كتل try-catch لمعالجة الاستثناءات بشكل سلس ومنع تعطل البرنامج:
try {
// الكود الذي قد يتسبب في حدوث استثناء
int number = int.parse("abc");
} catch (e) {
// الكود الذي يتم تشغيله في حالة حدوث استثناء
print("Something went wrong: $e");
}تحتوي كتلة try على الكود الذي قد يسبب مشاكل، بينما تعالج كتلة catch أي استثناءات تحدث. يحتوي المتغير e على معلومات حول الاستثناء.
جرّب بنفسك
import 'dart:io';
void main() {
// قراءة نص الإدخال
String? input = stdin.readLineSync();
// عرض رسالة المعالجة
print('Processing input: $input');
// TODO: اكتب الكود الخاص بك أدناه
// استخدم كتلة try-catch لتحويل الإدخال إلى عدد صحيح بأمان
// احسب المربع إذا كان التحويل ناجحاً
// تعامل مع أي استثناءات تحدث أثناء التحويل
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1التعامل المتقدم مع القوائم
خصائص القائمة: first و lastحالة القائمة: isEmpty و isNotEmptyعكس القائمةالإضافة إلى القائمة: insertالحذف من القائمة: removeWhereالبحث في القائمة: indexOfفرز القائمةخلط القائمةملخص - منظم القوائم4معالجة الـ Map المتقدمة
التكرار عبر الـ Mapالتحقق من المفاتيح والقيمخصائص الـ Map: keys و valuesإضافة مشروطة: putIfAbsentإزالة العناصر من الـ Mapالـ Maps المتداخلةمراجعة - تحديث المخزون2عمليات القوائم الوظيفية
التحويل باستخدام 'map'التصفية باستخدام 'where'استخدام '.toList()'التحقق من الشروط باستخدام 'any'الشروط باستخدام 'every'البحث باستخدام 'firstWhere'مراجعة - تصفية البيانات5مشروع: حاسبة عربة التسوق
إعداد المشروعإضافة العناصر إلى العربة3المجموعات
ما هي المجموعة؟إنشاء مجموعةالإضافة والحذف من المجموعاتالتحقق من وجود عناصر في المجموعةتحويل قائمة إلى مجموعةاتحاد المجموعاتتقاطع المجموعاتالفرق بين المجموعاتمراجعة - قائمة ضيوف فريدة6أساسيات معالجة الأخطاء
ما هي الاستثناءات؟كتلة 'try-catch'التقاط الاستثناءات باستخدام 'on'كتلة 'finally'رمي استثناءملخص - القسمة الآمنة