- معالجة الاستثناء
- ميزة التعامل مع الاستثناءات
- التسلسل الهرمي لفئات الاستثناء
- أنواع الاستثناء
- مثال الاستثناء
- السيناريوهات التي قد يحدث فيها استثناء
ال معالجة الاستثناءات في جافا هي واحدة من الأقوياء آلية التعامل مع أخطاء وقت التشغيل بحيث يمكن الحفاظ على التدفق الطبيعي للتطبيق.
في هذا البرنامج التعليمي، سنتعرف على استثناءات 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. ومع ذلك، عندما نقوم بمعالجة الاستثناء، سيتم تنفيذ بقية العبارات. ولهذا السبب نستخدم معالجة الاستثناءات جافا .
هل تعرف؟
|
التسلسل الهرمي لفئات استثناءات Java
فئة java.lang.Throwable هي الفئة الجذرية للتسلسل الهرمي لاستثناءات Java الموروثة من خلال فئتين فرعيتين: الاستثناء والخطأ. التسلسل الهرمي لفئات استثناءات Java موضح أدناه:
أنواع استثناءات جافا
هناك نوعان أساسيان من الاستثناءات: محددة وغير محددة. يعتبر الخطأ بمثابة الاستثناء الذي لم يتم التحقق منه. ومع ذلك، وفقا لشركة أوراكل، هناك ثلاثة أنواع من الاستثناءات وهي:
- استثناء محدد
- استثناء لم يتم التحقق منه
- خطأ
الفرق بين الاستثناءات المحددة وغير المحددة
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
مؤشر استثناءات جافا
- كتلة محاولة الالتقاط في جافا
- جافا كتلة الصيد المتعددة
- تجربة جافا المتداخلة
- جافا أخيرا بلوك
- جافا رمي الكلمة الرئيسية
- انتشار استثناء جافا
- جافا يلقي الكلمة الرئيسية
- جافا رمي مقابل رميات
- جافا النهائي مقابل أخيرا مقابل اللمسات الأخيرة
- التعامل مع استثناءات جافا مع تجاوز الطريقة
- استثناءات جافا المخصصة