סוף סוף ג'אווה חסום הוא בלוק המשמש לביצוע קוד חשוב כגון סגירת החיבור וכו'.
סוף סוף בלוק Java מבוצע תמיד בין אם מטופל חריג או לא. לכן, הוא מכיל את כל ההצהרות הדרושות שיש להדפיס ללא קשר להתרחשות החריגה או לא.
הבלוק הסופי עוקב אחר בלוק הנסיון-תפוס.
תרשים זרימה של סוף סוף בלוק
הערה: אם אינך מטפל בחריג, לפני סיום התוכנית, JVM מבצע לבסוף חסימה (אם בכלל).
למה להשתמש ב-Java לבסוף לחסום?
- לבסוף ניתן להשתמש בחסום ב-Java כדי לשים ' לנקות ' קוד כגון סגירת קובץ, סגירת חיבור וכו'.
- את ההצהרות החשובות שיש להדפיס ניתן למקם בבלוק הסופי.
סוף סוף שימוש בג'אווה
בואו נראה את המקרים השונים שבהם ניתן להשתמש ב-Java לבסוף בחסימה.
מקרה 1: כאשר לא מתרחש חריג
בוא נראה את הדוגמה שלהלן שבה תוכנית Java לא זורקת שום חריג, והחסימה הסופית מבוצעת לאחר חסימת ה- try.
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: כאשר מתרחש חריג אך לא מטופל על ידי בלוק ה-catch
בואו נראה את הדוגמה הממלאת. כאן, הקוד זורק חריג אולם בלוק ה-catch לא יכול להתמודד עם זה. למרות זאת, החסימה הסופית מבוצעת לאחר חסימת הניסיון ואז התוכנית מסתיימת בצורה חריגה.
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: כאשר מתרחש חריג והוא מטופל על ידי בלוק ה-catch
דוגמא:
בוא נראה את הדוגמה הבאה שבה קוד ה-Java זורק חריג וה-catch block מטפל בחריגה. מאוחר יותר החסימה הסופית מבוצעת לאחר הבלוק של ה-Try-catch. יתר על כן, גם שאר הקוד מבוצע כרגיל.
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...'); } }
תְפוּקָה: