أساسيات Try-Catch
جزء من قسم Logic & Flow في رحلة Java على Coddy — الدرس 40 من 59.
تُستخدم كتل try-catch في لغة Java للتعامل مع الاستثناءات (الأخطاء) التي قد تحدث أثناء تنفيذ البرنامج. يوضع الكود الذي قد يتسبب في حدوث استثناء داخل كتلة try، بينما يوضع كود معالجة الخطأ داخل كتلة catch.
إليك الهيكل الأساسي لكتلة try-catch:
try {
// الكود الذي قد يتسبب في استثناء
} catch (ExceptionType e) {
// الكود للتعامل مع الاستثناء
}لنرى ذلك عملياً مع Integer.parseInt()، الذي يقوم بتحويل String إلى عدد صحيح (integer):
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
التحدي
سهلقم بإنشاء طريقة تسمى divideNumbers تأخذ ثلاث وسائط:
- سلسلة نصية (
num1) تمثل الرقم الأول - سلسلة نصية (
num2) تمثل الرقم الثاني - عدد صحيح (
index) يمثل فهرس المصفوفة
يجب أن تقوم الطريقة بـ:
- إنشاء مصفوفة بحجم 2
- تخزين القيمة الصحيحة المحولة لـ num1 مقسومة على القيمة الصحيحة المحولة لـ num2 في الفهرس المعطى
- إرجاع القيمة الموجودة في الفهرس المعطى
- معالجة جميع الاستثناءات الممكنة برسائل خطأ مناسبة
يجب أن تكون رسائل الإرجاع:
- بالنسبة لـ
NumberFormatException: "Error: Invalid number format" - بالنسبة لـ
ArithmeticException: "Error: Division by zero" - بالنسبة لـ
ArrayIndexOutOfBoundsException: "Error: Invalid array index" - في حالة العملية الناجحة: إرجاع النتيجة كسلسلة نصية
ورقة مرجعية
تعالج كتل Try-catch الاستثناءات (الأخطاء) التي قد تحدث أثناء تنفيذ البرنامج. يوضع الكود الذي قد يتسبب في حدوث استثناء في كتلة try، بينما يوضع كود معالجة الخطأ في كتلة catch.
الهيكل الأساسي:
try {
// الكود الذي قد يتسبب في حدوث استثناء
} catch (ExceptionType e) {
// كود لمعالجة الاستثناء
}مثال مع Integer.parseInt():
String text = "abc";
try {
int number = Integer.parseInt(text);
System.out.println(number);
} catch (NumberFormatException e) {
System.out.println("Error: Not a valid number");
}أنواع الاستثناءات الشائعة:
NumberFormatException- تنسيق رقم غير صالحArithmeticException- القسمة على صفرArrayIndexOutOfBoundsException- فهرس مصفوفة غير صالح
جرّب بنفسك
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));
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة - المصفوفات ثنائية الأبعادجمع وطرح المصفوفاتالمصفوفات المتعرجة (Jagged Arrays)المصفوفات ثلاثية الأبعاد وما بعدهاأنماط المصفوفات ثنائية الأبعاد الشائعةمراجعة - كل شيء عن المصفوفات2HashMap الجزء الأول
ما هو الـ HashMap؟تعريف الـ HashMapالوصول إلى القيمالتحقق من وجود المفتاحتعديل القواميسملخص - HashMap3HashMap الجزء الثاني
دوال HashMapالتكرار باستخدام keySet()التكرار باستخدام entrySet()HashMap متداخلمراجعة - إدارة المستودعمراجعة - عمليات HashMap6التحكم المتقدم في تدفق البرنامج
العبارات المعنونةتعبير Switchمطابقة الأنماطجمل الحمايةمراجعة - تدفق التحكم