Menu
CoddyTech
flag Ar iconالعربيةdown icon

أساسيات 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");
}
challenge icon

التحدي

سهل

أنشئ دالة باسم divideNumbers تأخذ ثلاث وسيطات:

  1. نوع String (num1) يمثّل الرقم الأول
  2. نوع String (num2) يمثّل الرقم الثاني
  3. عددًا صحيحًا (index) يمثّل فهرسًا في المصفوفة

يجب أن تقوم الدالة بما يلي:

  1. إنشاء مصفوفة بحجم 2
  2. تخزين قيمة num1 الصحيحة بعد تحليلها مقسومةً على قيمة num2 الصحيحة بعد تحليلها، وذلك عند الفهرس المحدد
  3. إرجاع القيمة الموجودة عند الفهرس المحدد
  4. معالجة جميع الاستثناءات المحتملة، وإرجاع رسالة الخطأ المقابلة بدلًا من ذلك

يجب أن تكون رسائل الإرجاع كما يلي:

  • بالنسبة إلى 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));
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم Java عبر الإنترنت