בלוק try...catch
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-PHP של Coddy. שיעור 53 מתוך 68.
כאשר קוד ה-PHP שלך נתקל בבעיות שעלולות לגרום לו לקרוס, דרושה לך דרך לטפל במצבים האלה באופן מסודר. בלוק try...catch מספק דרך מובנית להתמודד עם חריגות — אובייקטי שגיאה מיוחדים שמייצגים בעיות חמורות בקוד שלך.
בלוק try מכיל קוד שעלול להיכשל או לזרוק חריגה. אם מתרחשת חריגה בתוך הבלוק הזה, PHP מפסיקה מיד את ביצוע הקוד שנותר בבלוק try ועוברת לבלוק catch המתאים. בלוק catch מטפל בחריגה ומאפשר לסקריפט שלך להמשיך לפעול במקום לקרוס.
<?php
try {
// קוד שעשוי לזרוק חריגה
$result = riskyFunction();
echo "Success!";
} catch (Exception $e) {
// טפל בחריגה
echo "An error occurred: " . $e->getMessage();
}
?>בלוק ה־catch מקבל אובייקט Exception שמכיל מידע על מה השתבש. אפשר לגשת להודעת השגיאה באמצעות המתודה getMessage(). הגישה הזאת מונעת מכל הסקריפט שלך להיעצר כשמשהו משתבש, ומאפשרת לך לשלוט באופן הטיפול בשגיאות ובמה שהמשתמשים שלך רואים.
אפשר גם לזרוק חריגה בעצמך באמצעות מילת המפתח throw. לאחר מכן PHP קופץ ישירות לבלוק catch, והמתודה getMessage() מחזירה את ההודעה שלך:
throw new Exception("Custom error message");אתגר
קליתקבל קלט אחד: מספר המייצג גיל. הקלט עשוי להיות מספר שלילי, שאינו תקף כגיל.
קרא את הקלט, המר אותו למספר שלם וצור בלוק try...catch. בתוך בלוק try, בדוק אם הגיל שלילי. אם הוא שלילי, זרוק Exception חדש עם ההודעה "Age cannot be negative". אם הגיל תקף (אפס או חיובי), הדפס "Valid age: " ואחריו את ערך הגיל.
בבלוק catch, טפל בחריגה על ידי הדפסת "Error: " ואחריו הודעת החריגה באמצעות המתודה getMessage().
מבנה הקלט: שורה אחת המכילה מספר שלם (לדוגמה: 25 או -5)
הפלט הצפוי:
- אם הגיל תקף:
Valid age:ואחריו ערך הגיל - אם הגיל שלילי:
Error: Age cannot be negative
נסו בעצמכם
<?php
// קראו את הקלט
$age = intval(fgets(STDIN));
// TODO: כתבו את הקוד שלכם למטה
// צרו בלוק try...catch כדי לוודא שהגיל תקין
?>השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
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 אונליין