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

لماذا نحتاج إلى كتل التقاط متعددة في Java؟

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

مثال باستخدام كتل الصيد المنفصلة

import java.util.Arrays;

public class ExceptionHandler {

	public static void main(String[] args) {

		Integer[] colorsOfASpectrum = { 7, 6, 5, 4, 3, 2, 1, 0 };

		try {

			System.out.println("Total number of options on a dice are: " + Arrays.toString(colorsOfASpectrum));

	// 		un-comment the following line to see "Index Out of Bounds Exception"
	//		colorsOfASpectrum[10] = 7; // Index Out of Bounds Exception

			System.out.println(colorsOfASpectrum[0] / 0);	// Arithmetic Exception

		} catch (ArrayIndexOutOfBoundsException e) {
			// This catch block executes in case of "Index Out of Bounds Exception"
			System.out.println("Array Index Out Of Bounds Exception " + e);

		} catch (ArithmeticException e) {
			// This catch block executes in case of "Arithmetic Exception"
			System.out.println("Arithmetic Exception " + e);
		}

		System.out.println("\n----Rest of the code executes here----");
	}
}

انتاج |

إجمالي الألوان في الطيف هو: [7، 6، 5، 4، 3، 2، 1] تمت مواجهة الاستثناء java.lang.ArithmeticException: / بمقدار صفر ----يتم تنفيذ بقية التعليمات البرمجية هنا----
كما ترون، في المثال أعلاه، يتم تنفيذ كتلة مختلفة عند طرح استثناء. هناك طريقة أكثر فعالية لالتقاط الاستثناءات المتعددة باستخدام نفس كتلة التعليمات البرمجية لالتقاط الاستثناءات من أنواع مختلفة. قم بإلقاء نظرة على المثال التالي.

مثال باستخدام كتلة الالتقاط المتعددة في Java

import java.util.Arrays;

public class MultiExceptionHandler {

	public static void main(String[] args) {

		Integer[] colorsOfASpectrum = { 7, 6, 5, 4, 3, 2, 1 };

		try {

			System.out.println("Total colors on a spectrum are: " + Arrays.toString(colorsOfASpectrum));

	//		colorsOfASpectrum[10] = 7; // Index Out of Bounds Exception
			System.out.println(colorsOfASpectrum[0] / 0); // Arithmetic Exception

		} catch (ArrayIndexOutOfBoundsException | ArithmeticException e) {
			// We don't need two different catch blocks for different kinds of exceptions
			// Both exceptions will be handled using this multiple catch block

			System.out.println("Exception Encountered " + e);
		}
		System.out.println("\n----Rest of the code executes here----");
	}
}

انتاج |

يمكنك إلغاء التعليق على السطر 13 لطباعة الاستثناء من النوع الآخر.
إجمالي الألوان في الطيف هو: [7، 6، 5، 4، 3، 2، 1] تمت مواجهة الاستثناء java.lang.ArithmeticException: / بمقدار صفر ----يتم تنفيذ بقية التعليمات البرمجية هنا----

خاتمة

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