להשתמש ב-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.

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

פיתוח ב-JavaScript

Axios interceptors

תכנון נכון של קריאות AJAX באפליקציה ריאקטית וניהול השגיאות או ההצלחות עם פיצ׳ר נחמד של axios

תמונה מצוירת של רובוט שמנקה HTML
יסודות בתכנות

סניטציה – למה זה חשוב

הסבר על טכניקה פשוטה וידועה מאד שאנו מפעילים על מידע לפני שאנחנו מציגים אותו ב-HTML באפליקציה או באתר.

מיקרו בקרים

הפעלת מסך oled קטנטן עם esp32

יצירת מערכת מולטימדיה שלמה בגודל של בול דואר עם מיקרובקר ובעלות של דולרים בודדים. וגם על הדרך נלמד על ת׳רדים

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

רינדור של קליינט סייד עם SSR

הסבר קצר על SSR מול רינדור קלאסי ולא. לא תמיד זה טוב להשתמש בו. אין כדור כסף שיכול לפתור הכל.

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