التعامل مع الاستثناءات والأخطاء هو جانب حاسم في أي لغة برمجة، بما في ذلك لغة دارت. تتيح للمطورين التعامل مع الأخطاء والاستثناءات، مما يمنع البرنامج من الانهيار أو الانتهاء بشكل غير طبيعي. في هذه المقالة، سنستكشف مفهوم التعامل مع الاستثناءات في دارت، بالإضافة إلى طريقة بناء الجملة والتقنيات المختلفة للتعامل بفعالية مع الاستثناءات والأخطاء.
مفهوم التعامل مع الاستثناءات في دارت
الاستثناء 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
، جنبًا إلى جنب مع القدرة على ظهور استثناءات مخصصة، يمكنك التعامل بفعالية مع الحالات الاستثنائية في برامج دارت الخاصة بك.
تذكر أن تحلل متطلبات تطبيقك المحددة وتعامل مع الاستثناءات وفقًا لذلك لضمان تنفيذ سلس وتوفير تجربة مستخدم جيدة.