الفرق بين الاستثناء والخطأ

الفرق بين الاستثناء والخطأ
الفرق بين الاستثناء والخطأ

فيديو: الفرق بين الاستثناء والخطأ

فيديو: الفرق بين الاستثناء والخطأ
فيديو: ما هو الـ NAT فى الراوتر وأهميتة للأجهزه المتصلة بالانترنت 2024, يوليو
Anonim

استثناء مقابل خطأ

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

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

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

ما هو الخطأ؟

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

ما الفرق بين الاستثناء والخطأ؟

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

موصى به: