تم حظر جافا أخيرًا عبارة عن كتلة تستخدم لتنفيذ تعليمات برمجية مهمة مثل إغلاق الاتصال وما إلى ذلك.
يتم دائمًا تنفيذ حظر 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...'); } }
انتاج: