التعامل مع الاستثناءات والأخطاء هو جانب حاسم في أي لغة برمجة، بما في ذلك لغة دارت. تتيح للمطورين التعامل مع الأخطاء والاستثناءات، مما يمنع البرنامج من الانهيار أو الانتهاء بشكل غير طبيعي. في هذه المقالة، سنستكشف مفهوم التعامل مع الاستثناءات في دارت، بالإضافة إلى طريقة بناء الجملة والتقنيات المختلفة للتعامل بفعالية مع الاستثناءات والأخطاء.
مفهوم التعامل مع الاستثناءات في دارت
الاستثناء Exception هو خطأ يحدث أثناء العمل على البرنامج في وقت التشغيل. عند حدوث استثناء Exception، يتم توقف التدفق العادي للبرنامج، وإذا لم يتم التعامل معه بشكل صحيح، فقد يؤدي إلى إنهاء البرنامج. يوفر التعامل مع الاستثناءات آلية للقبض على هذه الاستثناءات والتعامل معها، مما يسمح للبرنامج بالتعافي من الأخطاء والاستمرار في التنفيذ.
في دارت، يتم التعامل مع الاستثناءات بشكل أساسي باستخدام عبارات try و catch و finally. تحتوي عبارة try على الأكواد التي قد تثير ظهور استثناءً أو خطا، بينما تتعامل عبارة catch مع الخطا إذا حدث. تكون عبارة finally اختيارية وتنفذ بغض النظر عما إذا كان قد حدث استثناء أم لا.
دعنا نستكشف طريقة بناء الجملة وأمثلة على التعامل مع الاستثناءات في دارت.
بناء جملة try و catch للتعامل مع الأخطاء
بناء جملة try و catch للتعامل مع الاستثناءات في دارت هو كما يلي:
try {
// الأكوادالتي قد تثير ظهور استثناءً
} catch (exception) {
// التعامل مع الاستثناء
} finally {
// الأكواد التي تنفذ دائمًا، بغض النظر عن حدوث استثناء
}
يتم استخدام عبارة try لتحيط بالأكواد التي قد تثير ظهور استثناءً. إذا حدث استثناء داخل عبارة try، فإن التنفيذ ينتقل إلى عبارة catch المقابلة. تقوم عبارة catch بالقبض على الاستثناء وتنفذ الإجراءات اللازمة للتعامل معه. عبارة finally، إذا تم توفيرها، تنفذ بعد عبارتيtry و catch، بغض النظر عما إذا حدث استثناء أم لا.
مثال على التعامل مع الاستثناءات
لنأخذ مثالًا حيث نقسم رقمين ونتعامل مع IntegerDivisionByZeroException التي قد تحدث إذا كان المقسوم صفرًا:
void main() {
int dividend = 10;
int divisor = 0;
int quotient;
try {
quotient = dividend ~/ divisor;
print('الناتج: $quotient');
} catch (exception) {
print('خطأ: $exception');
} finally {
print('تنفيذ عبارة finally دائمًا');
}
}
في هذا المثال، تحتوي عبارة try على عملية القسم dividend ~/ divisor. إذا كان المقسوم divisor يساوي الصفر، فسيظهر استثناء IntegerDivisionByZeroException. تقوم عبارة catch بالقبض على الاستثناء وتطبع رسالة الاستثناء. أخيرًا، يتم تنفيذ عبارة finally ويتم طباعة الرسالة ‘تنفيذ عبارة finally دائمًا’.
الناتج:
خطأ: IntegerDivisionByZeroException تنفيذ عبارة finally دائمًا
ظهور استثناءات بشكل صريح
بالإضافة إلى التعامل مع الاستثناءات، تسمح دارت أيضًا بظهور استثناءات بشكل صريح باستخدام كلمة throw. يمكن أن يكون ذلك مفيدًا عندما ترغب في ظهور استثناء محدد استنادًا إلى ظروف معينة.
void checkAccountBalance(int balance) {
if (balance < 0) {
throw Exception('لا يمكن أن يكون رصيد الحساب سالبًا');
}
}
void main() {
try {
checkAccountBalance(-100);
} catch (exception) {
print('خطأ: $exception');
}
}
في هذا المثال، تقوم وظيفة checkAccountBalance برمي استثناء عام Exception مع رسالة خطأ مخصصة إذا كان الرصيد سالبًا. تقوم كتلة catch بالقبض على الاستثناء وتطبع رسالة الاستثناء.
الناتج:
خطأ: Exception: لا يمكن أن يكون رصيد الحساب سالبًا
استثناءات مخصصة في دارت
تسمح دارت أيضًا بإنشاء استثناءات مخصصة عن طريق تعريف class استثناء مخصص. يمكن أن يكون ذلك مفيدًا عندما ترغب في التعامل مع أنواع محددة من الأخطاء أو توفير معلومات أكثر تفصيلاً حول الاستثناء.
class CustomException implements Exception {
final String message;
CustomException(this.message);
@override
String toString() => 'استثناء مخصص: $message';
}
void main() {
try {
throw CustomException('هذا استثناء مخصص');
} catch (exception) {
print(exception);
}
}
في هذا المثال، ننشئ class استثناء مخصصة CustomException التي تنفذ واجهة Exception. يأخذ الـ class معامل message في بنائها وتعيد كتابة دالةtoString لتوفير سلسلة نصية مخصص للاستثناء. ثم نقوم باستدعاء CustomException مع رسالة محددة ونقوم بالقبض عليه في عبارةcatch ونطبع الاستثناء.
الناتج:
استثناء مخصص: هذا استثناء مخصص
التعامل مع الاستثناءات هو جزء أساسي من كتابة أكواد قوية وموثوقة في دارت. يتيح لك التعامل مع الأخطاء ومنع انهيار البرنامج بشكل غير متوقع. من خلال استخدام عباراتtry و catch و finally، جنبًا إلى جنب مع القدرة على ظهور استثناءات مخصصة، يمكنك التعامل بفعالية مع الحالات الاستثنائية في برامج دارت الخاصة بك.
تذكر أن تحلل متطلبات تطبيقك المحددة وتعامل مع الاستثناءات وفقًا لذلك لضمان تنفيذ سلس وتوفير تجربة مستخدم جيدة.




