English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

ماذا يحدث إذا لم يتم معالجة الاستثناءات في برنامج Java؟

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

عادةً، عند تجميع البرنامج، إذا لم يتم إنشاء ملف .class، فإنه هو ملف القابل للتنفيذ في Java، ويتم تنفيذه كل مرة..classعند تشغيل البرنامج، يجب أن يعمل بشكل ناجح لتنفيذ كل سطر في البرنامج دون مشاكل. ولكن، في بعض الحالات الخاصة، يواجه JVM بعض المواقف المبهمة عند تنفيذ البرنامج، وهي لا تعرف كيفية التعامل معها.

هذه بعض الحلول الممكنة-

  • إذا كان حجم مصفوفتك 10، فسطر في الكود يحاول الوصول إلى العنصر 11 في المصفوفة.

  • إذا حاولت تقسيم الرقم على الصفر (النتيجة هي لا نهائية، ولا يمكن للJVM فهم كيفية حسابها).

هذا الوضع يسمى الاستثناء. كل استثناء ممثل به كلاس مسبق التحديد، يمكنك العثور على جميع كلاسات الاستثناء في حزمة java.lang. يمكنك أيضًا إنشاء استثناءات خاصة بك.

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

عند حدوث هذا الاستثناء، يجب التعامل معه باستخدام قالب try-catch أو رميها باستخدام كلمة المفتاح throws (تأجيل التعامل معها).

إذا لم تتعامل مع الاستثناء

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

مثال

عادةً، حجم المصفوفة ثابت ويتم الوصول إلى كل عنصر باستخدام المعدل. على سبيل المثال، قمنا بإنشاء مصفوفة حجمها 7. ثم، التعبيرات الصالحة للاступ على هذه المصفوفة ستكون من a [0] إلى a [6] (طول 1).

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

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

مثال

import java.util.Arrays;
import java.util.Scanner;
public class AIOBSample {
   public static void main(String args[]){
      int[] myArray = {1254, 1458, 5687,1457, 4554, 5445, 7524};
      System.out.println("العناصر في الصف هي: ");
      System.out.println(Arrays.toString(myArray));
      Scanner sc = new Scanner(System.in);
      System.out.println("أدخل مفتاح العنصر المطلوب: ");
      int element = sc.nextInt();
      System.out.println("العنصر في المفتاح المحدد هو :: " + myArray[element]);
   }
}

لكن، إذا لاحظت هذه النتيجة الخارجة، فقد طلبنا عنصر المعدل 9 لأنه معدل غير صالح، مما أدى إلىArrayIndexOutOfBoundsExceptionوإذا توقف التنفيذ.

استثناء في التنفيذ

العناصر في الصف هي:
[897, 56, 78, 90, 12, 123, 75]
أدخل مفتاح العنصر المطلوب:
7
استثناء في نواة "الرئيسية" java.lang.ArrayIndexOutOfBoundsException: 7
   at AIOBSample.main(AIOBSample.java:12)

حل

لحل هذه المشكلة، تحتاج إلى معالجة الاستثناء من خلال وضع كود مسؤول عن الاستثناء داخل قالب try-catch.

import java.util.Arrays;
import java.util.Scanner;
public class AIOBSample {
   public static void main(String args[]){
      int[] myArray = {1254, 1458, 5687,1457, 4554, 5445, 7524};
      System.out.println("العناصر في الصف هي: ");
      System.out.println(Arrays.toString(myArray));
      try {
         Scanner sc = new Scanner(System.in);
         System.out.println("أدخل مفتاح العنصر المطلوب: ");
         int element = sc.nextInt();
         System.out.println("العنصر في المفتاح المحدد هو :: " + myArray[element]);
      }
         System.out.println("من فضلك أدخل المفتاح الصحيح (من 0 إلى 6)");
      }
   }
}

نتيجة الإخراج

العناصر في الصف هي:
[1254, 1458, 5687, 1457, 4554, 5445, 7524]
أدخل مفتاح العنصر المطلوب:
7
من فضلك أدخل المفتاح الصحيح (من 0 إلى 6)
قد تعجبك هذه