كتلة 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
التحدي
سهلأنشئ دالة باسم processNumber تأخذ وسيطين:
- سلسلة نصية (
number) لتحويلها إلى عدد صحيح - قيمة منطقية (
shouldThrow) تحدد ما إذا كان يجب طرح استثناء
يجب أن تقوم الدالة بما يلي:
- تهيئة متغير result بالقيمة 0
- في كتلة try:
- إذا كانت shouldThrow هي true، فقم بقسمة 10 على 0
- خلاف ذلك، قم بتحويل السلسلة النصية number إلى عدد صحيح وتخزينها في result
- في كتلة catch: قم بتعيين result إلى -1
- في كتلة finally: أضف 100 إلى result
- إرجاع 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));
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة - المصفوفات ثنائية الأبعادجمع وطرح المصفوفاتالمصفوفات المتعرجة (Jagged Arrays)المصفوفات ثلاثية الأبعاد وما بعدهاأنماط المصفوفات ثنائية الأبعاد الشائعةمراجعة - كل شيء عن المصفوفات2HashMap الجزء الأول
ما هو الـ HashMap؟تعريف الـ HashMapالوصول إلى القيمالتحقق من وجود المفتاحتعديل القواميسملخص - HashMap3HashMap الجزء الثاني
دوال HashMapالتكرار باستخدام keySet()التكرار باستخدام entrySet()HashMap متداخلمراجعة - إدارة المستودعمراجعة - عمليات HashMap6التحكم المتقدم في تدفق البرنامج
العبارات المعنونةتعبير Switchمطابقة الأنماطجمل الحمايةمراجعة - تدفق التحكم