04-07-2005, 08:47
|
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
|
|
חבר מתאריך: 25.10.01
הודעות: 42,775
|
|
לפעמים פונקציות, למעט הערך שהן מחזירות, גם פולטות משהו החוצה. לדוגמא, אם מתחברים למסד נתונים, והקישור לא מצליח, הפונקציה mysql_connect תחזיר הודעת שגיאה ותגיד שהיא לא הצליחה להתחבר. אם יש לנו שגיאה של אי-יכולת חיבור למסד הנתונים, בדרך כלל השגיאה הזאת היא קריטית בעבורנו - כלומר - אנחנו לא יכולים לבצע דברים אם אין לנו את הנתונים לעבוד על פיהם (אך לעתים - זה לא כך - וממסד הנתונים אנחנו מוציאים מידע שהאתר שלנו יוכל להסתדר בלעדיו). אם איננו יכולים להסתדר, אנחנו צריכים לדעת למה לא עובד לנו מה שלא עובד. דרך אחת היא לבדוק מה החזירה הפונקציה, ולראות שהוחזר קוד תקין (כלומר, שונה מ 0) - ואם לא - לבצע טיפול בשגיאות (למשל - לבדוק באמצעות mysql_error מה הייתה השגיאה האחרונה, ולשלוח אותה, באי-מייל למשל, למתכנת). דרך אחרת היא לתת ל PHP לדווח על השגיאות המהותיות האלה, מה שאכן קורה בברירת המחדל (ב php.ini ישנן שתי הגדרות - error reporting - החומרה המינימלית של אזהרה כדי שהיא תוצג ו display_errors, מפתח כללי להגדרה האם הודעות יוצגו או לא באתר החי [אפשר גם להגדיר שההערות ישמרו בקובץ הלוג של השרת]).
ישנן פונקציות שבכל מקרה לא נרצה שפלט אפשרי מהן יוצג ללקוח, אפילו אם הן נכשלו, ואפילו אם פלט שגיאות ללקוח מופעל בהגדרות. למשל, אם אנחנו בונים מערכת שמעבדת תמונות ממצלמה דיגיטלית, אנחנו נרצה לבדוק תמיד האם יש מידע מיוחד שמור בתוך התמונות, באמצעות הפונקציה exif_read_data. הפונקציה הזאת, אם היא לא מוצאת מידע שכזה, תפלוט תמיד שגיאה, משום שההנחה היא שאם מריצים את הפונקציה על קובץ, עושים את זה על קובץ שבו קיים המידע. אך אנחנו עשויים לקבל קובץ מהגולש שאינו מכיל מידע. אז מה עושים אם אנחנו לא רוצים לבטל את כל תצוגת השגיאות באתר, ורוצים שהדף יפעל בלי שגיאות גם אם הגולש מעלה תמונה ללא מידע EXIF? משתמשים בתו @ לפני שם הפונקציה, שמשמעו "תבלע את כל ההודעות שהפונקציה תוציא".
|