تم فحصه مقابل استثناء لم يتم التحقق منه: الفرق والمقارنة

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

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

الوجبات السريعة الرئيسية

  1. يتحقق المترجم من الاستثناءات التي تم التحقق منها أثناء وقت الترجمة ويحتاج إلى معالجتها بواسطة المبرمج باستخدام كتلة try-catch أو رميات الكلمة الأساسية ، بينما تحدث الاستثناءات غير المحددة في وقت التشغيل ولا تحتاج إلى معالجتها.
  2. تُستخدم الاستثناءات المحددة للأخطاء القابلة للاسترداد، مثل عدم العثور على الملف، بينما تُستخدم الاستثناءات غير المحددة للأخطاء غير القابلة للاسترداد، مثل استثناءات نفاد الذاكرة أو استثناءات المؤشر الفارغ.
  3. الاستثناءات التي تم التحقق منها هي جزء من توقيع الأسلوب ، بينما الاستثناءات التي لم يتم التحقق منها ليست كذلك.

فحص مقابل استثناء لم يتم التحقق منه

الفرق بين الاستثناءات التي تم التحقق منها والتي لم يتم التحقق منها هو أن الاستثناءات التي تم التحقق منها هي تلك التي يجب اكتشافها ومعالجتها بواسطة عبارة الشيكات () وإلا فإنها ستتسبب في إنهاء البرنامج وطباعة تتبع المكدس، في حين أن الاستثناءات التي لم يتم التحقق منها، من ناحية أخرى، يجب أن تكون لا يلزم اكتشافها أو التعامل معها على الإطلاق، حيث تقع على عاتق المبرمج مسؤولية التأكد من عدم حدوث هذه الأخطاء مطلقًا.

فحص مقابل لم يتم التحقق منه

الاستثناء المحدد هو نوع معين من الاستثناءات التي توقف تشغيل البرنامج حتى يتم اكتشافه بواسطة كتلة catch أو تحديده في جملة throws للطريقة ، علاوة على ذلك ، يتم اكتشاف الاستثناء المحدد ومعالجته بواسطة عبارة check () ، أو سوف يتسببون في إنهاء البرنامج وطباعة تتبع مكدس.

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

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

اقرأ أيضا:  Clipping vs Culling: الفرق والمقارنة

جدول المقارنة

معلمات المقارنةاستثناء محدداستثناء غير محدد
تعريفالاستثناءات التي تم التحقق منها هي تلك التي يجب القبض عليها ومعالجتها بواسطة عبارات الشيكات ().لا يجب أن يتم القبض على الاستثناءات التي لم يتم التحقق منها أو التعامل معها على الإطلاق.
ظهوريجب أن تعالج كتلة catch الاستثناءات المحددة أثناء وقت الترجمة.الاستثناءات غير المعلنة ، والمعروفة أيضًا باسم استثناءات وقت التشغيل ، هي استثناءات لم يتم التحقق منها.
معالجة الأخطاءيوقف الاستثناء المحدد تشغيل البرنامج حتى يحاول اكتشاف خطأ أو خطأ.تقع على عاتق المبرمج مسؤولية التأكد من عدم حدوث هذه الأخطاء.
فئات الاستثناءلديها فصول استثنائية.لا تحتوي على أي فصول استثنائية ، أو أنها ليست جزءًا رئيسيًا من فصول استثنائية.
مثالOutOfMemoryError و NullPointerException و StackOverflowError.IndexOutOfBoundsException
قم بتثبيت هذا الآن لتتذكره لاحقًا
يعلق هذا

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

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

هذا يعني أن الكود الذي يتبع تعليمة الرمي لن يتم تنفيذه إذا لم تعالج كتلة catch الاستثناء.

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

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

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

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

يوفر تتبع المكدس معلومات لكل استدعاء أسلوب بالترتيب الذي تم استدعاؤه. يسمح هذا للمبرمج بالعثور على مكان حدوث استثناء في الكود أو مكان حدوث استثناء في تدفق تنفيذ الكود.

اقرأ أيضا:  TIFF مقابل JPG: الفرق والمقارنة

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

توجد استثناءات لم يتم التحقق منها للسماح للمبرمجين بالبرمجة بشكل أكثر مرونة وكفاءة. تم تصميم Java لتمكين المبرمجين من إنشاء تطبيقات تستخدم الموارد بكفاءة وتجنب ظهور حالة الجمود.

يمكن التخلص من الاستثناءات التي لم يتم التحقق منها من خلال ممارسات التصميم والتشفير الدقيقة. ومع ذلك ، فإن جميع الاستثناءات باستثناء NullPointerException في كود Java تعتبر غير محددة.

لا يجب أن يتم القبض على الاستثناءات التي لم يتم التحقق منها أو التعامل معها على الإطلاق.

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

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

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

من المقبول تمامًا أن يقرأ التطبيق نفس البيانات مرتين على خيطين مختلفين دون أن يكون له أي آثار سلبية على أداء النظام أو ثباته.

الاختلافات الرئيسية بين الاستثناءات التي تم التحقق منها والتي لم يتم التحقق منها

  1. الاستثناءات التي تم التحقق منها هي تلك التي يجب أن يتم القبض عليها ومعالجتها بواسطة عبارات الشيكات () ، في حين أن الاستثناءات التي لم يتم التحقق منها يجب ألا يتم القبض عليها أو التعامل معها على الإطلاق.
  2. يجب معالجة الاستثناءات التي تم التحقق منها بواسطة كتلة catch أثناء وقت الترجمة ، في حين أن استثناءات Uncaught ، والمعروفة أيضًا باسم استثناءات وقت التشغيل ، هي استثناءات لم يتم التحقق منها.
  3. يوقف الاستثناء المحدد تشغيل البرنامج حتى يحاول اكتشاف خطأ أو خطأ ، في حين أن الاستثناءات غير المحددة هي مسؤولية المبرمج للتأكد من عدم حدوث هذه الأخطاء أبدًا.
  4. يحتوي Checked Exception على فئات استثنائية ، في حين أن الاستثناءات التي لم يتم التحقق منها لا تحتوي على أي فئات استثنائية أو أنها ليست جزءًا رئيسيًا من الفئات الاستثنائية.
  5. مثال على استثناء محدد سيكون OutOfMemoryError و NullPointerException و StackOverflowError ، بينما مثال على استثناء غير محدد سيكون IndexOutOfBoundsException.

مراجع حسابات

  1. https://ieeexplore.ieee.org/abstract/document/4343929/
  2. https://link.springer.com/article/10.1023/A:1010020917337
طلب واحد؟

لقد بذلت الكثير من الجهد في كتابة منشور المدونة هذا لتقديم قيمة لك. سيكون مفيدًا جدًا بالنسبة لي ، إذا كنت تفكر في مشاركته على وسائل التواصل الاجتماعي أو مع أصدقائك / عائلتك. المشاركة هي ♥ ️

هل تريد حفظ هذه المقالة لوقت لاحق؟ انقر فوق القلب الموجود في الزاوية اليمنى السفلية للحفظ في مربع المقالات الخاصة بك!

نبذة عن الكاتب

شارا ياداف حاصلة على ماجستير في إدارة الأعمال في المالية. هدفها هو تبسيط الموضوعات المتعلقة بالتمويل. عملت في مجال التمويل لمدة 25 عامًا تقريبًا. وقد عقدت العديد من الفصول المالية والمصرفية لكليات الأعمال والمجتمعات. اقرأ المزيد عندها صفحة بيو.