logo

تم حظر جافا أخيرًا

تم حظر جافا أخيرًا عبارة عن كتلة تستخدم لتنفيذ تعليمات برمجية مهمة مثل إغلاق الاتصال وما إلى ذلك.

يتم دائمًا تنفيذ حظر Java أخيرًا سواء تمت معالجة الاستثناء أم لا. لذلك فهو يحتوي على كافة البيانات الضرورية التي يجب طباعتها بغض النظر عن حدوث الاستثناء أم لا.

تتبع الكتلة الأخيرة كتلة محاولة الالتقاط.

مخطط انسيابي للكتلة النهائية

تم حظر جافا أخيرًا

ملحوظة: إذا لم تقم بمعالجة الاستثناء، قبل إنهاء البرنامج، يقوم JVM بتنفيذ الحظر أخيرًا (إن وجد).

لماذا استخدام جافا منع أخيرا؟

  • أخيرًا يمكن استخدام الحظر في Java لوضع ' تنظيف رمز مثل إغلاق ملف، وإغلاق الاتصال، وما إلى ذلك.
  • يمكن وضع البيانات المهمة المراد طباعتها في الكتلة النهائية.

استخدام جافا أخيرا

دعونا نرى الحالات المختلفة التي يمكن فيها استخدام حظر Java أخيرًا.

الحالة 1: عندما لا يحدث استثناء

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

TestFinallyBlock.java

 class TestFinallyBlock { public static void main(String args[]){ try{ //below code do not throw any exception int data=25/5; System.out.println(data); } //catch won't be executed catch(NullPointerException e){ System.out.println(e); } //executed regardless of exception occurred or not finally { System.out.println('finally block is always executed'); } System.out.println('rest of phe code...'); } } 

انتاج:

تم حظر جافا أخيرًا

الحالة 2: عند حدوث استثناء ولكن لا تتم معالجته بواسطة كتلة الالتقاط

دعونا نرى المثال filling. هنا، يطرح الكود استثناءً لكن كتلة الالتقاط لا تستطيع التعامل معه. وعلى الرغم من ذلك، يتم تنفيذ الكتلة الأخيرة بعد كتلة المحاولة ثم ينتهي البرنامج بشكل غير طبيعي.

TestFinallyBlock1.java

 public class TestFinallyBlock1{ public static void main(String args[]){ try { System.out.println('Inside the try block'); //below code throws divide by zero exception int data=25/0; System.out.println(data); } //cannot handle Arithmetic type exception //can only accept Null Pointer type exception catch(NullPointerException e){ System.out.println(e); } //executes regardless of exception occured or not finally { System.out.println('finally block is always executed'); } System.out.println('rest of the code...'); } } 

انتاج:

تم حظر جافا أخيرًا

الحالة 3: عند حدوث استثناء وتتم معالجته بواسطة كتلة الالتقاط

مثال:

دعونا نرى المثال التالي حيث يطرح كود Java استثناءً وتتعامل كتلة الالتقاط مع الاستثناء. لاحقًا، يتم تنفيذ الكتلة الأخيرة بعد كتلة محاولة الالتقاط. علاوة على ذلك، يتم أيضًا تنفيذ بقية التعليمات البرمجية بشكل طبيعي.

TestFinallyBlock2.java

 public class TestFinallyBlock2{ public static void main(String args[]){ try { System.out.println('Inside try block'); //below code throws divide by zero exception int data=25/0; System.out.println(data); } //handles the Arithmetic Exception / Divide by zero exception catch(ArithmeticException e){ System.out.println('Exception handled'); System.out.println(e); } //executes regardless of exception occured or not finally { System.out.println('finally block is always executed'); } System.out.println('rest of the code...'); } } 

انتاج:

تم حظر جافا أخيرًا

القاعدة: لكل كتلة محاولة يمكن أن يكون هناك صفر أو أكثر من كتل الالتقاط، ولكن كتلة واحدة فقط في النهاية.

ملاحظة: لن يتم تنفيذ الكتلة الأخيرة في حالة خروج البرنامج (إما عن طريق استدعاء System.exit() أو عن طريق التسبب في خطأ فادح يؤدي إلى إحباط العملية).