בלוק finally
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-PHP של Coddy. שיעור 54 מתוך 68.
לפעמים צריך קוד שרץ ללא קשר לשאלה אם מתרחש חריג או לא. בלוק finally מספק את ההבטחה הזו — הוא מכיל קוד שתמיד יתבצע לאחר שבלוק try...catch מסתיים, ולכן הוא מתאים במיוחד לפעולות ניקוי כמו סגירת קבצים או חיבורי מסד נתונים.
הבלוק finally רץ בכל התרחישים: כאשר הבלוק try מסתיים בהצלחה ללא חריגות, כאשר נזרקת חריגה ונתפסת, ואפילו כאשר נזרקת חריגה אך אינה נתפסת. האמינות הזאת הופכת אותו לחיוני כדי להבטיח שקוד ניקוי חשוב תמיד ירוץ.
<?php
try {
echo "Attempting operation...\n";
// קוד שעלול לזרוק חריגה
} catch (Exception $e) {
echo "Error: " . $e->getMessage() . "\n";
} finally {
echo "Cleanup completed.\n";
}
?>הבלוק finally מתבצע לאחר שהבלוקים try ו-catch סיימו את פעולתם, ומספק מקום קבוע לקוד ניקוי חיוני. כך מובטח שהתסריט שלך יטפל כראוי במשאבים וישמור על מצב נקי, בלי קשר למה שקורה במהלך הביצוע.
אתגר
קלתקבלו שני קלטים: סוג פעולה ומספר. הקלט הראשון הוא מחרוזת שתהיה "divide" או "multiply". הקלט השני הוא מספר שישמש בפעולה.
קראו את שני הקלטים וצרו בלוק try...catch...finally. בתוך בלוק try, בדקו את סוג הפעולה:
- אם הפעולה היא
"divide", בדקו אם המספר הוא אפס. אם הוא אפס, זרקוExceptionחדש עם ההודעה"Cannot divide by zero". אם המספר אינו אפס, חשבו 100 חלקי המספר והדפיסו"Result: "ולאחריו את התוצאה. - אם הפעולה היא
"multiply", חשבו 100 כפול המספר והדפיסו"Result: "ולאחריו את התוצאה.
בבלוק catch, טפלו בכל חריגה על ידי הדפסת "Error: " ולאחריו הודעת החריגה באמצעות המתודה getMessage().
בבלוק finally, הדפיסו "Operation completed".
פורמט הקלט:
- שורה ראשונה: מחרוזת של סוג הפעולה (או
divideאוmultiply) - שורה שנייה: מספר (לדוגמה:
5או0או2.5)
הפלט הצפוי:
- אם הפעולה מצליחה:
Result:ואחריו הערך שחושב, ואזOperation completedבשורה חדשה - אם מתרחשת חלוקה באפס:
Error: Cannot divide by zero, ואזOperation completedבשורה חדשה
נסו בעצמכם
<?php
// קראו את הקלטים
$operation = trim(fgets(STDIN));
$number = floatval(fgets(STDIN));
// TODO: כתבו את הקוד שלכם למטה
// צרו בלוק try...catch...finally לטיפול בפעולה
?>השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1פונקציות מתקדמות
פונקציות אנונימיותסגירות ו-'use'פונקציות חץפונקציות callbackשימוש ב-'call_user_func'פונקציות משתנותהעברה באמצעות הפניהפונקציות רקורסיביותסיכום: מגוון פונקציות4מערכים רב־ממדיים
יצירת מערך דו־ממדיגישה לאיברי מערך דו־ממדישינוי איברי מערך דו־ממדימעבר באמצעות לולאות מקוננותמערכים אסוציאטיביים דו־ממדייםסיכום: תרגיל רשת פשוטה2מניפולציות מתקדמות במערכים
הוספה באמצעות 'array_push'הסרה באמצעות 'array_pop'הוספה לתחילת המערך באמצעות 'array_unshift'הסרה מתחילת המערך באמצעות 'array_shift'מיזוג מערכים ממוספריםמיזוג מערכים אסוציאטיבייםחילוץ באמצעות 'array_slice'בדיקת ערכים באמצעות 'in_array'חיפוש מפתחות באמצעות 'array_search'סיכום: תרגיל רשימת השמעה5פנקס ציונים לתלמידים
הגדרת הפרויקט: מבנה הנתוניםהוספת תלמיד חדשהוספת ציון לתלמידחישוב הממוצע של התלמידמציאת התלמיד המצטייןהפקת תעודת ציונים8טיפול בשגיאות ובחריגות
הבנת שגיאות PHPבלוק try...catchבלוק finallyזריקת חריגהיצירת חריגה מותאמת אישיתשימוש בחריגה מותאמת אישיתסיכום: אימות קלט3מיון מערכים
מיון מערכים עם אינדקסים בסדר עולהמיון מערכים עם אינדקסים בסדר יורדמיון מערכים אסוציאטיביים לפי ערךמיון מערכים אסוציאטיביים לפי מפתחמיון בסדר טבעימיון מותאם אישית באמצעות 'usort'סיכום: מיון טבלת מוביליםתרגלו בעצמכם: קומפיילר PHP אונליין