موصى به, 2024

اختيار المحرر

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

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

رسم بياني للمقارنة

أساس للمقارنةخطأاستثناء
الأساسيةيحدث خطأ بسبب نقص موارد النظام.يحدث استثناء بسبب الرمز.
التعافيخطأ غير قابل للاسترداد.استثناء قابل للاسترداد.
الكلمات الدالةلا توجد وسيلة للتعامل مع خطأ بواسطة رمز البرنامج.تتم معالجة الاستثناءات باستخدام ثلاث كلمات رئيسية "try" و "catch" و "throw".
الآثار
عند اكتشاف الخطأ ، سيتم إنهاء البرنامج بشكل غير طبيعي.عند اكتشاف استثناء ، يتم رميه والقبض عليه بواسطة الكلمات الرئيسية "throw" و "catch" في المقابل.
أنواعيتم تصنيف الأخطاء على أنها نوع غير محدد.يتم تصنيف الاستثناءات على أنها محددة أو غير محددة.
صفقةفي Java ، يتم تعريف الأخطاء "java.lang.Error" package.في Java ، يتم تعريف استثناءات في "java.lang.Exception".
مثالOutOfMemory ، StackOverFlow.استثناءات محددة: NoSuchMethod ، ClassNotFound.
استثناءات لم يتم التحقق منها: NullPointer ، IndexOutOfBounds.

تعريف الخطأ

" Error " هو فئة فرعية للفئة المضمنة "Throwable". الأخطاء هي الحالات الحرجة التي تحدث بسبب عدم وجود موارد النظام ، ولا يمكن التعامل معها من خلال رمز البرنامج. لا يمكن استرداد الأخطاء بأية وسيلة لأنه لا يمكن إنشاؤها أو رميها أو ضبطها أو الرد عليها. تحدث الأخطاء بسبب الفشل الكارثي الذي لا يمكن معالجته عادة بواسطة برنامجك.

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

تعريف الاستثناء

"استثناء" هو أيضًا فئة فرعية من فئة "Throwable" المضمنة. الاستثناءات هي الحالات الاستثنائية التي تحدث في بيئة وقت التشغيل. غالباً ما يحدث الاستثناءات بسبب رمز برنامجنا. ولكن يمكن معالجة الاستثناءات بواسطة البرنامج نفسه ، حيث يمكن الاستثناءات. تتم معالجة الاستثناءات باستخدام ثلاث كلمات رئيسية "جرّب" ، "catch" ، "throw". إن صيغة كتابة الاستثناء هي:

 جرب {// كتابة شفرتك هنا} Catch (نوع الاستثناء) {// اكتب الكود هنا} 

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

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

الاختلافات الرئيسية في الخطأ والاستثناء

  1. يحدث الخطأ فقط عندما تكون موارد النظام ناقصة بينما يحدث استثناء في حالة وجود مشكلة في التعليمات البرمجية.
  2. لا يمكن استرداد الخطأ أبداً بينما يمكن استرداد استثناء عن طريق إعداد التعليمات البرمجية لمعالجة الاستثناء.
  3. لا يمكن التعامل مع الخطأ أبداً ، ولكن يمكن معالجة الاستثناء بواسطة الرمز إذا كان الكود الذي يرمي استثناء مكتوبًا داخل كتلة تجريبية ومحاولة.
  4. في حالة حدوث خطأ ، سيتم إنهاء البرنامج بشكل غير طبيعي. من ناحية أخرى ، إذا حدث الاستثناء ، فإن البرنامج سيطرح استثناءً ، ويتم التعامل معه باستخدام كتلة المحاولة والقبض.
  5. أخطاء من نوع لم يتم التحقق منه أي خطأ ليس في معرفة compilers في حين ، يتم تصنيف استثناء على أنها محددة وغير محددة.
  6. يتم تعريف الأخطاء في حزمة java.lang.Error بينما يتم تعريف استثناء java.lang.Exception.

استنتاج:

الاستثناءات هي نتائج الأخطاء التي تمت في ترميز البرنامج ، والأخطاء ناتجة عن الأداء غير السليم للنظام

Top