يتم استخدام المفتاح أخيرًا في Java مع Try مثال لتوضيح:
الطبقة العامة TryandFinallyTest {public static void (string [] args) يلقي الاستثناء {try a = testfinally (2) ؛ ) {int b = testfinally (1) ؛ ب) ؛ ::::::::::::::::::::::::: :::::::::::::::::::::: ::::::::::::::::::::::::: :::::::::::::::::::::: ::::::::::::::::::::::::::: ::: تجرب ما إذا كان البرنامج يلقي استثناءًا أو مقاطعًا أخرى ، سيتم تنفيذ محتوى التبديل أخيرًا (i) {CASE 1: ++ i ؛ ("قادم أخيرًا"+العلم) ؛
نتائج التنفيذ هي كما يلي
أخيرًا عندما قادم = 2finally عندما أكون = 1 ، عادت النتيجة بشكل طبيعي B: 2finally قادمًا عندما يكون I = 3-BREAK RESORD النتيجة: 3finally قادم عندما I = 4RETURN RETRESS: -1
توضح النتيجة أنه بغض النظر عن الموقف أعلاه ، سيتم دائمًا تنفيذ الكتلة أخيرًا.
بالمقارنة مع نماذج اللغة الأخرى ، فإن الكلمة الرئيسية أخيرًا هي أفضل إضافة إلى نموذج معالجة استثناء Java. تسمح الهيكل الأخير للرمز بتنفيذ دائمًا بغض النظر عما إذا كان الاستثناء يحدث. استخدم أخيرًا للحفاظ على الحالة الداخلية للكائن وتنظيف الموارد غير الذاكرة. بدون رمزك أخيرًا ، سيكون المربح. على سبيل المثال ، يوضح الرمز التالي كيف يجب عليك كتابة رمز لتحرير الموارد غير الذاكرة دون استخدام أخيرًا:
استيراد java.net.* .accept () // رمز آخر هنا ...
يقوم هذا الرمز بإنشاء مقبس ويستدعي طريقة القبول. قبل الخروج من هذه الطريقة ، يجب عليك إغلاق هذا المقبس لتجنب نقاط الضعف في الموارد. لإنجاز هذه المهمة ، نسمي Close AT // 2 ، وهو آخر بيان للطريقة. ولكن ماذا يحدث إذا حدث استثناء في كتلة المحاولة؟ في هذه الحالة ، لا تحدث المكالمة الوثيقة في // 2. لذلك ، يجب عليك التقاط هذا الاستثناء وإدراج مكالمة أخرى لإغلاقها على // 1 قبل إعادة إصدار هذا الاستثناء. هذا يضمن إغلاق المقبس قبل الخروج من الطريقة.
إن كتابة رمز مثل هذا مرهق ومعرض للخطأ ، لكنه ضروري بدون أخيرًا. لسوء الحظ ، بلغات بدون آلية أخيرًا ، قد ينسى المبرمجون تنظيم الكود الخاص بهم بهذه الطريقة ، مما يؤدي إلى نقاط الضعف في الموارد. البند الأخير في جافا يحل هذه المشكلة. مع أخيرًا ، يمكن إعادة كتابة الكود السابق في النموذج التالي:
استيراد java.net.* .accept () ؛
تضمن الكتلة أخيرًا أن يتم تنفيذ الطريقة الإغلاق دائمًا بغض النظر عما إذا كان يتم إصدار استثناء خلال كتلة المحاولة. لذلك ، يتم التأكد من أن الطريقة الإغلاق تسمى دائمًا قبل الخروج من الطريقة. وبهذه الطريقة يمكنك التأكد من أن المقبس مغلق وأنك لم تسرب الموارد. ليست هناك حاجة لكتابة صيد أخرى في هذه الطريقة. يتم توفير كتلة الصيد في المثال الأول فقط لإغلاق المقبس ، والآن يتم إغلاق هذا من قبل أخيرًا. إذا قمت بتقديم كتلة اصطياد ، يتم تنفيذ الكود في الكتلة أخيرًا بعد انتهاء كتلة الصيد.
يجب استخدام الكتلة الأخيرة مع مجموعة المحاولة أو المحاولة/التقاط. علاوة على ذلك ، لا يمكن الخروج من كتلة المحاولة دون تنفيذ كتلة لها أخيرًا. إذا كانت الكتلة أخيرًا موجودة ، فسيتم تنفيذها دائمًا. (هذا البيان صحيح من وجهة النظر هذه. هناك طريقة للخروج من كتلة المحاولة دون تنفيذ الكتلة الأخيرة. إذا كان الرمز ينفذ نظامًا. من ناحية أخرى ، إذا قمت بإيقاف تشغيل السلطة أثناء تنفيذ كتلة المحاولة