EasyDelphi Q&A
+4 تصويتات
90 مشاهدات

 ما هو الفرق بين كل من TRY EXCEPT END and TRY FINALLY END و متي نستعملهما 

سُئل في تصنيف OOP بواسطة (7,610 نقاط) | 90 مشاهدات

2 إجابة

+2 تصويتات
أفضل إجابة

عند حصول اعتراض (استثناء) Exception يتوقف البرنامج عن تنفيذ الخوارزمية و يخرج من التابع  function بدون متابعة تسلسل التنفيذ.

بدون استقبال الاعتراض في مكان ما سوف يتابع الاعتراض اعتراضه للتنفيذ التابع الحالي ثم التابع الذي طلبه ثم الذي طلبه، إلى ان يتوقف التطبيق نفسه عن العمل (نلاحظها في ال console اكثر)

لذلك لابد من استقباله حتى لا ينهي التطبيق او الخوارزمية بالكامل، و بعد استقباله نقرر فيما اذا كنا نستطيع مجرد اظهار رسالة او متابعة العمل، ام نتركه لينهي كل شيء.

ال except تستقبل الاعتراض، اي ان المقطع بين ال except end سيتم تنفيذه فقط في حال حصول اعتراض بين ال try except ،

تستطيع استقبال و تجاهل  (لا تكتب شيء) هنا و لا كأن الاعتراض حصل، او تستطيع ان تفحص نوع الاعتراض

try
except
	on E: MyException do
      //it is my exception do somthing
    end;
end;

في المثال الاعتراض في حال MyException هو الذي اعترض و نحن سنقرر ماذا سنفعل.

 

طيب ماذا لو حصل اعتراض، اثناء تنفيذ تابع، و هذا التابع قد قام بحجز مكان في الذاكرة في بداية التنفيذ، هنا قبل الخروج من التابع يجب تحرير هذا الجزء، حتى لو حصل اعتراض، تم اختراع finally ، ليتم تنفيذ الجزء الذي يلي finally حتى لو حصل اعتراض، او لم يحصل.

يعني الفرق بين ال except و بين ال finally ان الاول ينفذ فقط في حال حصول اعتراض، اما الثاني finally فسوف ينفذ بكل الاحوال في حال حصل اعتراض ام لا قبل الخروج من التابع.

ملاحظة على الهامش، ال exit ايضا عبارة عن اعتراض لكنه اعتراض طيب ينفذ finally قبل الخروج من التابع.

تم الرد عليه بواسطة (15,390 نقاط)
مختارة بواسطة
+3 تصويتات
try except end

هده لتسيير الاستثناءات يعني اذا حدث لستثناء في التعليمات التي توجد بي try و accept فان التنفيد ينتقل مباشرة االتعليمات التي بين accept و end

بينما    

try finally end

فان التعليمات التي بين finally و end تنفذ مباشرة بعد الانتهاء من تنفيذ التعليمات التي بين try و finally تستعمل غالبا لتحرير الذاكرة من المتغيرات او الابجكت التي انشات قبل try 

تم الرد عليه بواسطة (7,620 نقاط)

اسئلة متعلقة

+3 تصويتات
1 إجابة
سُئل أغسطس 30، 2018 في تصنيف OOP بواسطة Ammar Salah (2,090 نقاط) | 60 مشاهدات
+3 تصويتات
2 إجابة
سُئل أغسطس 11، 2018 في تصنيف OOP بواسطة KHALED (7,610 نقاط) | 96 مشاهدات
+4 تصويتات
5 إجابة
سُئل يوليو 13، 2018 في تصنيف vcl بواسطة ziane (260 نقاط) | 109 مشاهدات
0 تصويتات
0 إجابة
سُئل يوليو 20 في تصنيف vcl بواسطة Amar Gozim (11,150 نقاط) | 17 مشاهدات
+4 تصويتات
3 إجابة
سُئل يونيو 26، 2018 بواسطة rahiche (2,360 نقاط) | 117 مشاهدات
ادعُ اصدقائك في الفايسبوك لمشاركتك
Comodo SSL

مرحبًا بك إلى EasyDelphi Q&A، حيث يمكنك طرح الأسئلة والحصول على الإجابة عليها من المستخدمين الآخرين.

لا يسمح بطلب او السؤال عن كراك او تفعيل او كسر او فك او اي شيء يخالف اتفاقيات الترخيص  مهما كان السبب ومهما كان البرنامج ونوعه. ولا حتى نشر روابط تحتوي على مثل هذه الاشياء لا في الاسئلة ولا في الاجابات ولا التعليقات . نهائيا

454 سؤال
691 إجابة
1,285 تعليق
266 مستخدم