أساسيات Try-Catch
جزء من قسم المنطق وتدفق التنفيذ في رحلة Java على Coddy. الدرس 40 من 59.
تُستخدم كتل try-catch في Java لمعالجة الاستثناءات (الأخطاء) التي قد تحدث أثناء تنفيذ البرنامج. يوضع الكود الذي قد يُلقي استثناءً في كتلة try، بينما يوضع كود معالجة الأخطاء في كتلة catch.
إليك البنية الأساسية لكتلة try-catch:
try {
// كود قد يرمي استثناءً
} catch (ExceptionType e) {
// كود لمعالجة الاستثناء
}لنرَ ذلك عمليًا باستخدام Integer.parseInt()، الذي يحوّل String إلى عدد صحيح:
String text = "abc";
try {
int number = Integer.parseInt(text);
System.out.println(number);
} catch (NumberFormatException e) {
System.out.println("Error: Not a valid number");
}بعد تنفيذ الكود أعلاه، يكون الناتج:
Error: Not a valid number
يمكن أن يتبع try واحد عدة كتل catch، واحدة لكل نوع من الاستثناءات. تنفّذ Java أول كتلة يتطابق نوعها مع الاستثناء الذي تم طرحه:
try {
int number = Integer.parseInt(text);
System.out.println(10 / number);
} catch (NumberFormatException e) {
System.out.println("Error: Not a valid number");
} catch (ArithmeticException e) {
System.out.println("Error: Division by zero");
}التحدي
سهلأنشئ دالة باسم divideNumbers تأخذ ثلاث وسيطات:
- نوع String (
num1) يمثّل الرقم الأول - نوع String (
num2) يمثّل الرقم الثاني - عددًا صحيحًا (
index) يمثّل فهرسًا في المصفوفة
يجب أن تقوم الدالة بما يلي:
- إنشاء مصفوفة بحجم 2
- تخزين قيمة
num1الصحيحة بعد تحليلها مقسومةً على قيمةnum2الصحيحة بعد تحليلها، وذلك عند الفهرس المحدد - إرجاع القيمة الموجودة عند الفهرس المحدد
- معالجة جميع الاستثناءات المحتملة، وإرجاع رسالة الخطأ المقابلة بدلًا من ذلك
يجب أن تكون رسائل الإرجاع كما يلي:
- بالنسبة إلى
NumberFormatException: "Error: Invalid number format" - بالنسبة إلى
ArithmeticException: "Error: Division by zero" - بالنسبة إلى
ArrayIndexOutOfBoundsException: "Error: Invalid array index" - عند نجاح العملية: إرجاع النتيجة كسلسلة نصية
جرّب بنفسك
import java.util.Scanner;
public class Main {
public static String divideNumbers(String num1, String num2, int index) {
// اكتب الكود الخاص بك هنا
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String num1 = scanner.nextLine();
String num2 = scanner.nextLine();
int index = Integer.parseInt(scanner.nextLine());
System.out.println(divideNumbers(num1, num2, index));
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة - المصفوفات ثنائية الأبعادجمع وطرح المصفوفاتالمصفوفات المتعرجة (Jagged Arrays)المصفوفات ثلاثية الأبعاد وما بعدهاأنماط المصفوفات ثنائية الأبعاد الشائعةمراجعة - كل شيء عن المصفوفات2HashMap الجزء الأول
ما هو الـ HashMap؟تعريف الـ HashMapالوصول إلى القيمالتحقق من وجود المفتاحتعديل القواميسملخص - HashMap3HashMap الجزء الثاني
دوال HashMapالتكرار باستخدام keySet()التكرار باستخدام entrySet()HashMap متداخلمراجعة - إدارة المستودعمراجعة - عمليات HashMap6التحكم المتقدم في تدفق البرنامج
العبارات المعنونةتعبير Switchمطابقة الأنماطجمل الحمايةمراجعة - تدفق التحكمتدرّب بنفسك: مترجم Java عبر الإنترنت