English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
الاستثناءات هي مشاكل تحدث أثناء تنفيذ البرنامج (أخطاء تشغيل). عند حدوث استثناء، ينهار البرنامج فجأة ويتم تجاهل الكود الذي يأتي بعد سطر الاستثناء.
import java.util.Scanner; public class ExceptionExample { public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.println("Enter first number: "); int a = sc.nextInt(); System.out.println("Enter second number: "); int b = sc.nextInt(); int c = a/b; System.out.println("The result is: "+c); } }
نتائج الإخراج
Enter first number: 100 Enter second number: 0 Exception in thread "main" java.lang.ArithmeticException: / by zero at ExceptionExample
في Java، هناك نوعان من الاستثناءات
الاستثناءات المدروسة - الاستثناءات المدروسة هي استثناءات تحدث عند التجميع، وتُسمى أيضًا استثناءات التجميع. لا يمكن تجاهل هذه الاستثناءات بسهولة عند التجميع. يجب على البرمجي الانتباه (معالجة) هذه الاستثناءات.
الاستثناءات غير المفترضة - الاستثناءات غير المفترضة هي استثناءات تحدث أثناء التنفيذ. هذه تُسمى أيضًا استثناءات الوقت التشغيل. تشمل هذه الأخطاء البرمجية مثل الأخطاء في المنطق أو استخدام API بشكل غير صحيح. يتم تجاهل استثناءات الوقت التشغيل عند التجميع.
طريقة عرض استثناءات الوقت التشغيل/الاستثناءات غير المفترضة“استثناء رئيسي للسطر”بشكل عام، كلما حدث استثناء في الوقت التشغيل، تبدأ الرسالة بهذه السطر.
في برنامج Java التالي لدينا مصفوفة حجمها 5 ونحاول الوصول إلى العنصر الـ6، مما يسبب ArrayIndexOutOfBoundsException.
public class ExceptionExample { public static void main(String[] args) { //创建大小为5的整数数组 int inpuArray[] = new int[5]; //ملء الصف inpuArray[0] = 41; inpuArray[1] = 98; inpuArray[2] = 43; inpuArray[3] = 26; inpuArray[4] = 79; //زيادة مؤشر الارتباط عن حجم الصف System.out.println( inpuArray[6]); } }
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6 at MyPackage.ExceptionExample.main(ExceptionExample.java:14)
في المثال التالي، نحاول إنشاء مجموعة عددية باستخدام عدد سلبي كقيمة الحجم، مما يسبب NegativeArraySizeException.
public class Test { public static void main(String[] args) { int[] intArray = new int[-5]; } }
عند التنفيذ، سيقوم البرنامج بإنشاء استثناء في الوقت الحقيقي، كما هو موضح أدناه.
Exception in thread "main" java.lang.NegativeArraySizeException at myPackage.Test.main(Test.java:6)
يمكنك معالجة الاستثناءات في الوقت الحقيقي وتجنب التوقف غير المتوقع، ولكن لا يوجد حل محدد للاستثناءات في الوقت الحقيقي في Java، ويعتمد ذلك على نوع الاستثناء، والنوع الذي تحتاجه لتغيير الكود.
على سبيل المثال، إذا كنت بحاجة إلى إصلاح ArrayIndexOutOfBoundsException في البرنامج المذكور أعلاه، فيجب عليك حذف/تغيير السطر الذي يتجاوز حجم الصف عند الوصول إلى مؤشر الصف.
public class ExceptionExample { public static void main(String[] args) { //إنشاء مجموعة عددية برقم الحجم 5 int inpuArray[] = new int[5]; //ملء الصف inpuArray[0] = 41; inpuArray[1] = 98; inpuArray[2] = 43; inpuArray[3] = 26; inpuArray[4] = 79; //زيادة مؤشر الارتباط عن حجم الصف System.out.println( inpuArray[3]); } }
نتائج الإخراج
26