logo

معالجة الاستثناءات في جافا

  1. معالجة الاستثناء
  2. ميزة التعامل مع الاستثناءات
  3. التسلسل الهرمي لفئات الاستثناء
  4. أنواع الاستثناء
  5. مثال الاستثناء
  6. السيناريوهات التي قد يحدث فيها استثناء

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

في هذا البرنامج التعليمي، سنتعرف على استثناءات Java وأنواعها والفرق بين الاستثناءات المحددة وغير المحددة.

فرز المصفوفة في جافا

ما هو الاستثناء في جافا؟

معنى القاموس: الاستثناء هو حالة غير طبيعية.

في Java، الاستثناء هو حدث يعطل التدفق الطبيعي للبرنامج. إنه كائن يتم طرحه في وقت التشغيل.

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

معالجة الاستثناءات هي آلية للتعامل مع أخطاء وقت التشغيل مثل ClassNotFoundException وIOException وSQLException وRemoteException وما إلى ذلك.

ميزة التعامل مع الاستثناءات

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

 statement 1; statement 2; statement 3; statement 4; statement 5;//exception occurs statement 6; statement 7; statement 8; statement 9; statement 10; 

لنفترض أن هناك 10 عبارات في برنامج Java وحدث استثناء في العبارة 5؛ لن يتم تنفيذ بقية التعليمات البرمجية، أي لن يتم تنفيذ البيانات من 6 إلى 10. ومع ذلك، عندما نقوم بمعالجة الاستثناء، سيتم تنفيذ بقية العبارات. ولهذا السبب نستخدم معالجة الاستثناءات جافا .

هل تعرف؟
  • ما الفرق بين الاستثناءات المحددة وغير المحددة؟
  • ماذا يحدث خلف الكود int data=50/0;؟
  • لماذا استخدام كتلة الصيد متعددة؟
  • هل هناك أي احتمال لعدم تنفيذ الكتلة النهائية؟
  • ما هو انتشار الاستثناء؟
  • ما الفرق بين الكلمة الرئيسية 'رمي' و'رمي'؟
  • ما هي القواعد الأربع لاستخدام معالجة الاستثناءات مع تجاوز الطريقة؟

التسلسل الهرمي لفئات استثناءات Java

فئة java.lang.Throwable هي الفئة الجذرية للتسلسل الهرمي لاستثناءات Java الموروثة من خلال فئتين فرعيتين: الاستثناء والخطأ. التسلسل الهرمي لفئات استثناءات Java موضح أدناه:

التسلسل الهرمي لمعالجة الاستثناءات

أنواع استثناءات جافا

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

  1. استثناء محدد
  2. استثناء لم يتم التحقق منه
  3. خطأ
التسلسل الهرمي لمعالجة الاستثناءات

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

1) تم التحقق من الاستثناء

تُعرف الفئات التي ترث الفئة Throwable مباشرةً باستثناء RuntimeException وError باسم الاستثناءات المحددة. على سبيل المثال، IOException، وSQLException، وما إلى ذلك. يتم التحقق من الاستثناءات المحددة في وقت الترجمة.

2) استثناء لم يتم التحقق منه

تُعرف الفئات التي ترث RuntimeException بالاستثناءات غير المحددة. على سبيل المثال، ArithmeticException، وNullPointerException، وArrayIndexOutOfBoundsException، وما إلى ذلك. لا يتم التحقق من الاستثناءات التي لم يتم التحقق منها في وقت الترجمة، ولكن يتم التحقق منها في وقت التشغيل.

3) خطأ

الخطأ لا يمكن إصلاحه. بعض الأمثلة على الأخطاء هي OutOfMemoryError وVirtualMachineError وAssertionError وما إلى ذلك.

الكلمات الرئيسية استثناء جافا

توفر Java خمس كلمات أساسية تُستخدم لمعالجة الاستثناء. ويصف الجدول التالي كل منها.

الكلمة الرئيسيةوصف
يحاوليتم استخدام الكلمة الأساسية 'try' لتحديد الكتلة التي يجب أن نضع فيها رمز الاستثناء. وهذا يعني أننا لا نستطيع استخدام محاولة كتلة وحدها. يجب أن يتبع كتلة المحاولة إما التقاط أو أخيرًا.
يمسكيتم استخدام كتلة 'catch' لمعالجة الاستثناء. يجب أن يسبقه حاول كتلة مما يعني أننا لا نستطيع استخدام كتلة الصيد وحدها. يمكن أن يتبعه حظر أخيرًا لاحقًا.
أخيراًيتم استخدام الكتلة 'أخيرًا' لتنفيذ التعليمات البرمجية الضرورية للبرنامج. يتم تنفيذه سواء تمت معالجة الاستثناء أم لا.
يرمييتم استخدام الكلمة الأساسية 'رمي' لطرح استثناء.
رمياتيتم استخدام الكلمة الأساسية 'throws' للإعلان عن الاستثناءات. وهو يحدد أنه قد يحدث استثناء في الأسلوب. لا يرمي استثناء. يتم استخدامه دائمًا مع توقيع الطريقة.

مثال على معالجة استثناءات Java

دعونا نرى مثالاً على معالجة استثناءات Java حيث نستخدم عبارة محاولة الالتقاط لمعالجة الاستثناء.

JavaExceptionExample.java

 public class JavaExceptionExample{ public static void main(String args[]){ try{ //code that may raise exception int data=100/0; }catch(ArithmeticException e){System.out.println(e);} //rest code of the program System.out.println('rest of the code...'); } } 
اختبره الآن

انتاج:

 Exception in thread main java.lang.ArithmeticException:/ by zero rest of the code... 

في المثال أعلاه، 100/0 يثير استثناء حسابي والذي تتم معالجته بواسطة كتلة محاولة الالتقاط.

السيناريوهات الشائعة لاستثناءات جافا

هناك بعض السيناريوهات التي قد تحدث فيها استثناءات لم يتم التحقق منها. وهم على النحو التالي:

1) سيناريو يحدث فيه ArithmeticException

إذا قسمنا أي رقم على صفر، يحدث استثناء حسابي.

 int a=50/0;//ArithmeticException 

2) سيناريو يحدث فيه NullPointerException

إذا كان لدينا قيمة فارغة في أي عامل يؤدي إجراء أي عملية على المتغير إلى ظهور NullPointerException.

 String s=null; System.out.println(s.length());//NullPointerException 

3) سيناريو يحدث فيه NumberFormatException

إذا كان تنسيق أي متغير أو رقم غير متطابق، فقد يؤدي ذلك إلى NumberFormatException. لنفترض أن لدينا خيط المتغير الذي يحتوي على أحرف؛ سيؤدي تحويل هذا المتغير إلى رقم إلى حدوث NumberFormatException.

 String s='abc'; int i=Integer.parseInt(s);//NumberFormatException 

4) سيناريو يحدث فيه ArrayIndexOutOfBoundsException

عندما يتجاوز المصفوفة حجمها، يحدث ArrayIndexOutOfBoundsException. قد تكون هناك أسباب أخرى لحدوث ArrayIndexOutOfBoundsException. النظر في العبارات التالية.

 int a[]=new int[5]; a[10]=50; //ArrayIndexOutOfBoundsException 

مؤشر استثناءات جافا

  1. كتلة محاولة الالتقاط في جافا
  2. جافا كتلة الصيد المتعددة
  3. تجربة جافا المتداخلة
  4. جافا أخيرا بلوك
  5. جافا رمي الكلمة الرئيسية
  6. انتشار استثناء جافا
  7. جافا يلقي الكلمة الرئيسية
  8. جافا رمي مقابل رميات
  9. جافا النهائي مقابل أخيرا مقابل اللمسات الأخيرة
  10. التعامل مع استثناءات جافا مع تجاوز الطريقة
  11. استثناءات جافا المخصصة