תוכן עניינים:
הגדרה - מה המשמעות של סוף סוף בלוק?
חסימה סופית, בהקשר של C #, מתייחסת לחסימה של הצהרות המוצעות תמיד ללא קשר לאירועים או חריגים בלתי צפויים שעלולים להתרחש במהלך ביצוע האפליקציה. הוא משמש באופן אופציונלי עם חסימת "נסה / לתפוס" ומבטיח ביצוע של כל קוד שיש לבצע לפני היציאה מחסימה "נסה", ללא קשר להצלחה או כישלון ביצוע היישום.
ביצוע חסימת סוף סוף נועד לשחרר משאבים, כגון חיבורי בסיס נתונים, אשר בדרך כלל זמינים בכמויות מוגבלות. באמצעות מנגנון זה, פינוי המשאבים מתרחש מוקדם יותר מפעולת הסיום של אספן האשפה, ובכך מייעל את הזיכרון.
Techopedia מסביר סוף סוף את הבלוק
ניתן להשתמש בקוד בבלוק הסופי כדי לטפל בחריגים ברגע שהם מתרחשים, לנקות זיכרון שהוקצה בבלוק "נסה" או להיפטר מחפצים המחזיקים במשאבים חיצוניים (כמו ידיות קבצים) המשמשים בחסימה "נסה". חסימת סוף סוף גם מאפשרת ביצוע משימות משק בית כמו איפוס הסמן למצב רגיל לפני זמן החריג.
באופן כללי, הקוד בתוך חסימת סוף סוף מבוצע כאשר השליטה יוצאת ממחסום ניסיון כתוצאה מביצוע רגיל, כתוצאה מביצוע הצהרת "הפסקה", "goto", "המשך" או "החזרה" או עקב למעט חריג מהצהרת הניסיון.
בכל פעם שמתרחשת חריגה בבלוק הניסיון, השליטה עוברת מהקו שגרם לחריג לחסימה התפיסה הקרובה ביותר (מטפל בחריגות) ואז לחסימה הסופית. כמו כן, כאשר חריג נמשך מחדש בבלוק לתפוס, בקרת העברות לחסימה הסופית. לפיכך, דילוג על הקוד העוקב אחר הקו בו התרחש החריג.
אין לזרוק חריגים במפורש בחסימה סופית. אם מתרחשת חריגה במהלך ביצוע חסימת סוף סוף, כל קוד אחרי הנקודה בה נזרק החריג לא יבוצע, והחריג יפיץ לבלוק הניסיונות החיצוני. אם החסימה לבסוף כבר מטפלת בחריג אחר, הדבר מביא לסיום העיבוד של החריג הנוכחי.
יש להקפיד שלא להעביר באופן מפורש את הביצוע לחסימה סופית או מחוצה לה, מכיוון שלא מדובר בהעברה חוקית.