להשתמש ב-try & catch

דרך כתיבה שימושית וחשובה כאשר כותבים סקריפטים של PHP שקוראים ל-web services ולמשאבים חיצוניים.

לא מזמן יצא לי לפרסם מאמר על קוד מסוים שמדגים התקשרות עם טרנזילה באמצעות cURL. במאמר ניתן קוד מסוים ששימש כדוגמה. המאמר פורסם גם בניוזגיק, בתגובות חטפתי אש וגופרית מאחד המגיבים על כך שלא הכללתי בקוד את try&catch. הבטחתי שאני אקדיש מאמר מיוחד לטכניקה הפשוטה מאד הזו שאמורה לשמש כל מתכנת כאשר הוא כותב סקריפטים (גם פשוטים). אם תקדישו חמש דקות ללימוד הטכניקה הפשוטה הזו, גם אתם תוכלו להגביר את עמידות הסקריפטים שלכם. שימוש נבון בביטויי try&catch נחשבים להרגל קוד תקין. מצד שני, צריך לא להגזים.

ראשית כל, הסינטקס המאד מאד פשוט:


try {
//whatever code
}
catch (Exception $e) {
    echo 'Exception caught: ',  $e->getMessage(), "\n";
}

מה קורה פה? כל מה שיש בתוך הבלוק של ה-try ירוץ כרגיל, אבל תהיה תקלה כלשהי בתוך הבלוק הזה, הסקריפט לא יעצור לחלוטין אלא יריץ את מה שיש בתוך ה-catch ואז ימשיך לרוץ כרגיל.

למה זה טוב? למשל הדוגמה הטובה ביותר היא משאב חיצוני שאני טוען אותו ואני לא סגור במאה אחוז שהטעינה תצליח (ובטעינה של משאבים חיצוניים, כמו וובסרביסים למשל, בחיים אי אפשר להיות בטוח במאה אחוז שהטעינה תצליח). דוגמה נוספת ומוצלחת היא כתיבת מודול שאתה לא יודע באיזו סביבת PHP הוא ירוץ.

למשל, אם יש לי קריאת cURL, עדיף מאד לשים את מה שיש בקריאה הזו בתוך try-catch. כאשר catch יכול להכיל בתוכו רישום ללוג, הדפסת הודעת שגיאה למשתמש ואלמנטים נוספים.

לא צריך להכניס משפטי try&catch בכל מקום. לפעמים עדיף לתת לסקריפט לגווע במקרה של תקלה. לא תמיד אנו מעוניינים בהדפסה של הודעת שגיאה כלשהי. לפיכך עדיף לא להתפרע ולתקוע את המשפט הזה בכל מקום. מה שכן – בכל פעם שיש קריאה למשאב זה או אחר שהוא לא חלק אינהרנטי מהמערכת שלכם – עדיף להשתמש ב-try&catch.

פוסטים נוספים שכדאי לקרוא

בינה מלאכותית

עבודה עם MCP Streamable HTTP

איך מתקשרים עם שרת MCP שנמצא ברשת ואיך זה נראה באמת מאחורי הקלעים?

יסודות בתכנות

איך TCP עובד? מבט מעמיק

הסבר מעמיק מתחת למנוע על איך תקשורת TCP עובדת כולל ניתוח פקטות.

פתרונות ומאמרים על פיתוח אינטרנט

העולם המדהים של Chrome debugging

איך תוכנות שונות מפעילות את כרום כרצונן? איך דיבאגר בפרונט עובד? צלילה לעומק לתוך העולם המופלא של CDP

פתרונות ומאמרים על פיתוח אינטרנט

לא פרצו לנו, רק דלף לנו – לקחים טכניים מפרשת אלקטור

פסק הדין בפרשת תביעת של הדיבה אלקטור הוא קריאת השכמה טכנולוגית ומשפטית: מההגדרה המשפטית ל"פריצה", דרך החשיבות הקריטית של פרוטוקול ביעור נתונים אמיתי, ועד למה שבאמת קורה כשמערכות אבטחה מסתמכות על לוגים חסרים.

גלילה לראש העמוד