Menu
Coddy logo textTech

בלוק 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 סיימו את פעולתם, ומספק מקום קבוע לקוד ניקוי חיוני. כך מובטח שהתסריט שלך יטפל כראוי במשאבים וישמור על מצב נקי, בלי קשר למה שקורה במהלך הביצוע.

challenge icon

אתגר

קל

תקבלו שני קלטים: סוג פעולה ומספר. הקלט הראשון הוא מחרוזת שתהיה "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 לטיפול בפעולה

?>
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר PHP אונליין