الفرق بين الاستثناء المحدد واستثناء وقت التشغيل

الفرق بين الاستثناء المحدد واستثناء وقت التشغيل
الفرق بين الاستثناء المحدد واستثناء وقت التشغيل

فيديو: الفرق بين الاستثناء المحدد واستثناء وقت التشغيل

فيديو: الفرق بين الاستثناء المحدد واستثناء وقت التشغيل
فيديو: الفرق بين الازاحة و المسافة & الفرق بين السرعة والتسارع | PHYS-110 2024, شهر نوفمبر
Anonim

فحص الاستثناء مقابل استثناء وقت التشغيل

الاستثناءات هي نوع خاص من الأحداث ، والتي يمكن أن تزعج التدفق العادي للبرنامج. يأتي استثناء الاسم من "حدث استثنائي". طرح استثناء هو عملية إنشاء كائن استثناء وتسليمه إلى نظام وقت التشغيل. عندما يتلقى نظام وقت التشغيل كائن الاستثناء ، سيحاول العثور على شخص ما للتعامل معه داخل مكدس الاستدعاءات عن طريق اجتيازه بالترتيب العكسي (الذي تم استدعاء الطرق فيه). يكون نظام وقت التشغيل ناجحًا إذا وجد طريقة باستخدام معالج استثناء. معالج الاستثناءات عبارة عن كتلة من التعليمات البرمجية يمكنها معالجة الاستثناء المذكور رسميًا.إذا وجد نظام وقت التشغيل معالجًا مناسبًا ، فسيمرر كائن الاستثناء إلى المعالج. هذا يسمى اصطياد الاستثناء. ومع ذلك ، إذا تعذر معالجة الاستثناء ، فسيتم إنهاء البرنامج. في Java ، ترث الاستثناءات من فئة Throwable. الاستثناءات التي تم التحقق منها هي استثناءات يتم فرض المعالجة عليها من قبل المترجم. استثناءات وقت التشغيل هي نوع من الاستثناءات التي لم يتم التحقق منها من قبل المترجم.

ما هو الاستثناء المحدد؟

الاستثناءات المحددة هي إما كائنات من الفئة java.lang.exception أو فئاتها الفرعية (باستثناء java.lang. RuntimeException وفئاتها الفرعية). يتم "فحص" الاستثناءات التي تم التحقق منها في وقت الترجمة. هذا يعني أن على المبرمج إما أن يمسك أو يرمي هذه الاستثناءات ، وإلا فإن المترجم سيشتكي (مما يسبب خطأ في المترجم). لهذا السبب ، فإن العديد من الاستثناءات التي تم فحصها معروفة جيدًا للمبرمجين. على سبيل المثال ، يتم فحص استثناءات IOException وفئاتها الفرعية ، وكلما كان المبرمج يتعامل مع الوصول إلى ملف أو تعديله ، يتحقق المترجم للتأكد من أن جميع استثناءات IO الممكنة يعتني بها المبرمج.

ما هو استثناء وقت التشغيل؟

تتكون استثناءات وقت التشغيل من java.lang. RuntimeException وجميع فئاتها الفرعية. من الناحية النظرية ، فإنها تخدم نفس الغرض مثل الاستثناءات المحددة ، ويمكن طرحها أو التعامل معها مثل استثناء محدد ، لكن معالجتها لا يتم فرضها من قبل المترجم. لذلك ، تنتمي استثناءات وقت التشغيل إلى عائلة الاستثناءات التي لم يتم التحقق منها. NullPointerException و NumberFormatEception و ClassCastException و ArrayIndexOutOfBoundsException هي استثناءات وقت تشغيل شائعة في Java.

ما الفرق بين التحقق من الاستثناء واستثناء وقت التشغيل؟

على الرغم من أن كل من الاستثناءات المحددة واستثناءات وقت التشغيل هي حدوث غير مرغوب فيه أثناء تنفيذ البرنامج ، إلا أن هناك اختلافات بينهما. يتم فرض معالجة الاستثناءات التي تم التحقق منها من قبل المترجم ، لكن استثناءات وقت التشغيل ليست كذلك. لذلك ، يجب طرح الاستثناءات المحددة أو معالجتها من أجل ترجمة الكود ، ولكن لا يوجد مثل هذا الشرط فيما يتعلق باستثناءات وقت التشغيل.وبالتالي ، تنتمي استثناءات وقت التشغيل إلى فئة الاستثناءات غير المحددة إلى جانب الأخطاء.

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

موصى به: