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

كتلة Finally

جزء من قسم Logic & Flow في رحلة C# على Coddy — الدرس 27 من 66.

تحتوي كتلة finally على كود يتم تنفيذه دائمًا، سواء حدث استثناء أم لا، حتى لو كان هناك بيان return في كتلتي try أو catch.

أنشئ بنية try-catch-finally أساسية:

try
{
    // الكود الذي قد يطرح استثناءً
    int result = 10 / 2;
    Console.WriteLine("Result: " + result);
}
catch (DivideByZeroException ex)
{
    // الكود الذي يعالج الاستثناء
    Console.WriteLine("Cannot divide by zero: " + ex.Message);
}
finally
{
    // الكود الذي يتم تنفيذه دائماً
    Console.WriteLine("This always executes");
}

تُعد كتلة finally مفيدة لمهام التنظيف مثل إغلاق الملفات أو اتصالات قاعدة البيانات:

System.IO.StreamReader file = null;
try
{
    file = new System.IO.StreamReader("data.txt");
    string content = file.ReadToEnd();
    Console.WriteLine(content);
}
catch (System.IO.FileNotFoundException)
{
    Console.WriteLine("File not found.");
}
finally
{
    // قم دائمًا بإغلاق الملف، حتى في حالة حدوث استثناء
    if (file != null)
    {
        file.Close();
    }
}
challenge icon

التحدي

سهل

قم بإنشاء طريقة (method) تسمى ProcessData تقوم بما يلي:

  1. تأخذ معاملًا نصيًا (string parameter) يمثل اسم الملف
  2. تحاول فتح الملف وقراءة محتوياته
  3. تكتب المحتويات في وحدة التحكم (console)
  4. تقوم بتنظيف الموارد بشكل صحيح باستخدام كتلة finally
  5. تتعامل مع FileNotFoundException و IOException

إذا تعذر العثور على الملف، قم بطباعة: "ERROR: File not found: [filename]"

إذا حدث خطأ IO آخر، قم بطباعة: "ERROR: Could not read the file: [error message]"

قم دائمًا بطباعة "File operation completed." في كتلة finally، سواء حدث استثناء أم لا.

ورقة مرجعية

تحتوي كتلة finally على كود يتم تنفيذه دائمًا، سواء حدث استثناء أم لا، حتى لو كانت هناك جملة return في كتلتي try أو catch.

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

try
{
    // كود قد يتسبب في حدوث استثناء
    int result = 10 / 2;
    Console.WriteLine("Result: " + result);
}
catch (DivideByZeroException ex)
{
    // كود يعالج الاستثناء
    Console.WriteLine("Cannot divide by zero: " + ex.Message);
}
finally
{
    // كود يتم تنفيذه دائمًا
    Console.WriteLine("This always executes");
}

تعتبر كتلة finally مفيدة لمهام التنظيف مثل إغلاق الملفات أو اتصالات قواعد البيانات:

System.IO.StreamReader file = null;
try
{
    file = new System.IO.StreamReader("data.txt");
    string content = file.ReadToEnd();
    Console.WriteLine(content);
}
catch (System.IO.FileNotFoundException)
{
    Console.WriteLine("File not found.");
}
finally
{
    // إغلاق الملف دائمًا، حتى في حالة حدوث استثناء
    if (file != null)
    {
        file.Close();
    }
}

جرّب بنفسك

using System;
using System.IO;

class Program
{
    public static void ProcessData(string filename)
    {
        // اكتب الكود الخاص بك هنا
    }
    
    static void Main(string[] args)
    {
        string filename = Console.ReadLine();
        ProcessData(filename);
    }
}
quiz iconاختبر نفسك

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

جميع دروس Logic & Flow