"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > معالجة الاستثناءات في جافا

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

تم النشر بتاريخ 2024-08-01
تصفح:209

Exception Handling In Java

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

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

بعض الأمثلة على الأخطاء هي

  • خطأ عدم وجود ذاكرة كافية
  • خطأ في الآلة الافتراضية
  • خطأ في StackOverFlow

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

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

أنواع أخطاء التنفيذ في جافا

هناك ثلاثة أنواع من أخطاء التنفيذ في Java. وفيما يلي تفصيل لكل منهم

. خطأ في وقت الترجمة

يُعرف هذا النوع من الأخطاء بخطأ الترجمة أو الخطأ المحدد. يقوم برنامج Java بطرح هذا الرمز أثناء مرحلة الترجمة.

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

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

public class JavaExceptionCodes {
    public static void main (String []args){
        int y = 10      //no semicolon
        System.out.println(y);
    }

}

. خطا وقت التشغيل

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

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

  • مؤشر مجموعة خارج الحدود استثناء
  • استثناء حسابي
  • FileNotFoundException
  • استثناء NullPointer

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

public class JavaExceptionCodes {
    public static void main (String []args) {
        int nombas[] = {1, 2, 3, 4, 5};
        System.out.println(nombas[6]); 

    }
}
//ArrayIndexOutOfBoundsException

. خطأ منطقي

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

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

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

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

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

طرق معالجة الاستثناء:

Try – Catch – أخيرًا – Throw – Throws هي قائمة طرق معالجة الاستثناءات في Java. دعونا نقسم كل واحد منهم بالتفصيل مع الأمثلة:

. يحاول

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

بناء الجملة

try{

}

. يمسك

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

بناء الجملة

try{

}
catch (Exception e){

}

كتل التقاط متعددة

public class JavaExceptionCodes {
    public static void main (String []args) {
        int x = 10;
        int y = 0;
        int z ;
        int nombas [] = {5, 6, 7, 8, 9};
        try {
            System.out.println(z = x / y);
            System.out.println(nombas[6]);
        }
        catch (ArithmeticException e){
            System.out.println("Can't divide by 0. Choose another number"   e);
        }
        catch(ArrayIndexOutOfBoundsException e){
            System.out.println("Array Out Of Bound"   e);
        }
        System.out.println("End");
    }
}

. أخيراً

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

بناء الجملة

try{

}
catch (Exception e){

}
finally{

}

. يرمي

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

بناء الجملة

public class JavaExceptionCodes {
    public static void main (String []args) {

           try { throw new ArithmeticException("Try Run");
           }
           catch (ArithmeticException e){
               System.out.println("Catch Exception Error");
           }

    }
}

. رميات

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

أفضل الممارسات للتعامل مع الاستثناءات

  1. يمكن أن تحتوي كتلة المحاولة على عدة عبارات (أسطر من التعليمات البرمجية). من الأفضل إنشاء كتل التقاط متعددة لاكتشاف الخطأ في كل عبارة.

  2. حدد دائمًا نوع الاستثناء إذا كنت تعمل مع كتل التقاط متعددة.

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

  4. ضع دائمًا كتلة التقاط الاستثناءات العامة في نهاية كتل التقاط الاستثناءات المخصصة الأخرى.

بيان الافراج تم نشر هذه المقالة على: https://dev.to/akamzchidi/exception-handling-in-java-f32?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3