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

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

רספברי פיי

מה זה AIoT? ואיך אפשר להתחיל?

פוסט עם המון קישורים, מידע, סרטונים ופרק בפודקאסט שיפתח לכם שער לעולם ה-AIoT המרתק.

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

יישום של nonce על מנת להגן מפני התקפות injection

בפוסט הקודם הסברתי על hash עם CSP על משאבי inline – שזה נחמד ומעולה אבל פחות ישים בעולם האמיתי שבו בדרך כלל התוכן ה-inline (בין

מיקרו בקרים

חיבור מצלמה למיקרובקר

חיבור מצלמה למיקרו בקר ויצירה של מצלמת אבטחה מרחוק בעלות של 20 שקל.

רספברי פיי

התקנת OpenCanary על רספברי פיי

מה זה OpenCanary ואיך אפשר להתקין אותה על רספברי פיי ולשדרג את אבטחת הרשת הביתית או המשרדית.

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