Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

كتلة Finally

جزء من قسم Logic & Flow في رحلة Java على Coddy — الدرس 41 من 59.

تحتوي كتلة finally على كود سيتم تنفيذه بعد كتل try-catch، سواء حدث استثناء أم لا. تُستخدم عادةً لعمليات التنظيف مثل إغلاق الملفات أو اتصالات قاعدة البيانات.

إليك الهيكل الأساسي لكتلة try-catch-finally:

try {
   // الكود الذي قد يتسبب في استثناء
} catch (ExceptionType e) {
   // الكود الخاص بمعالجة الاستثناء
} finally {
   // الكود الذي يتم تنفيذه دائماً
}

لنلقِ نظرة على مثال باستخدام عداد:

int counter = 0;
try {
   int result = 10 / 0;
   // سيؤدي هذا إلى طرح استثناء
   counter = 1;
} catch (ArithmeticException e) {
   counter = 2;
} finally {
   counter = 3;
   // سيتم تنفيذ هذا دائمًا
}

بعد تنفيذ الكود أعلاه، يحتوي counter على:

3

challenge icon

التحدي

سهل

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

  1. سلسلة نصية (number) لتحويلها إلى عدد صحيح
  2. قيمة منطقية (shouldThrow) تحدد ما إذا كان يجب طرح استثناء

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

  1. تهيئة متغير result بالقيمة 0
  2. في كتلة try:
    • إذا كانت shouldThrow هي true، فقم بقسمة 10 على 0
    • خلاف ذلك، قم بتحويل السلسلة النصية number إلى عدد صحيح وتخزينها في result
  3. في كتلة catch: قم بتعيين result إلى -1
  4. في كتلة finally: أضف 100 إلى result
  5. إرجاع result كـ string

ورقة مرجعية

يتم تنفيذ كتلة finally بعد كتل try-catch، بغض النظر عما إذا كان قد حدث استثناء أم لا. تُستخدم لعمليات التنظيف.

الهيكل الأساسي:

try {
   // الكود الذي قد يطرح استثناءً
} catch (ExceptionType e) {
   // الكود لمعالجة الاستثناء
} finally {
   // الكود الذي يتم تنفيذه دائماً
}

مثال مع عداد (counter):

int counter = 0;
try {
   int result = 10 / 0; // يطرح استثناءً
   counter = 1;
} catch (ArithmeticException e) {
   counter = 2;
} finally {
   counter = 3; // يتم تنفيذه دائماً
}
// counter = 3

جرّب بنفسك

import java.util.Scanner;

public class Main {
    public static String processNumber(String number, boolean shouldThrow) {
        // اكتب الكود الخاص بك هنا
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String number = scanner.nextLine();
        boolean shouldThrow = Boolean.parseBoolean(scanner.nextLine());
        
        System.out.println(processNumber(number, shouldThrow));
    }
}
quiz iconاختبر نفسك

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

جميع دروس Logic & Flow