בפיתוח תוכנה וגם בשפה יום יומית, אקספציה (באנגלית: Exception) פירושו "חריג" או "סייג" או "יציאה מן הכלל", לא בהכרח רע אבל גם לא בהכרח טוב, אלא בכל מקרה פשוט חריג "טכנית" או "חוקית".
בפיתוח תוכנה, אקספציה היא בדרך כלל מונח כללי לתיאור אזהרה (warning) או ארור (error), בשל באג תוכנה או בעיה אחרת.
ההופעה של אקספציה נקראת זריקה (throwing) ומכאן הביטוי to throw an exception.
אקספציה מסוג ארור
ארור (באנגלית: Error) אני מגדיר כהודעה על בעיה כל שהיא כמו קלט שגוי או באג תוכנה.
ארור לעתים מסומן במספר ("קוד" או "קוד מצב") המייצג את ערכו המילולי בתור עיקרון; עיקרון זה הופך שימושי כאשר ערכו המילולי של הארור הוא ארוך מאד ונדרש ייצוג מקוצר שלו.
במקרים רבים ניתן להעתיק את תוכן הארור (ערכו המילולי) לקליפבורד ולהדביקו במנוע חיפוש מסוים דוגמת גוגל סרצ' ובכך למצוא פתרונות לבעיה שבגללה מופיעה הארור.
לפעמים ארורים מסוימים אינם ברורים ו\או אין לגביהם דוקומנטציה, הן במנועי חיפוש סטנדרטיים והן בחוברת הדרכה של תוכנה, אז במקרה כזה נדרש לפנות לקהילת מפתחים, לתאר להם את הבעיה ולשאול אותם איך לפתור אותה ואם יש צורך אז גם להציג בפניהם מה נוסה בכדי לפתור את הבעיה.
הטיפול בארורים נקרא ארור הנדלינג (error handling) והאמצעים העיקריים לו הם מספור\קודים, סטנדרטיזציה של הערות ארורים, טיפים לפיתרון, פנייה לדוקומנטציה כולל לחוברת הדרכה של תוכנה, התייעצות, פיתוח נקודתי וייתכנו גם פתרונות אוטומטיים \ אינטליגנציה מלאכותית שהם נדירים בעת כתיבת מאמר זה.
בשפות מחשב שיש בהן מנגנון טיפול באקספציות לעתים אפשר לגרום לארור המובנה במנגנון זה להופיע מעט שונה וברורה יותר במוקם ארור כללי טבעי.
זה נעשה לפי בדיקת תוכנה והתנייה כמו "אם הבדיקה לא הצליחה, אז תמיר ארור A לארור V
ובשפת PHP ניתן לעשות זאת עם הפונקציה הפנימית set_error_handler().
בשפות תכנות עילי מסוימות אקספציה תהיה ארור-פטאלי (fatal error) אם לא נתפסה (caught) כלומר אם לא זוהתה מצד מנגנון טיפול באקספציות.
קוד מצב של אקספציה
קוד מצב אני מגדיר כמונח סידורי (כגון מספר סידורי) לתיאור אזהרה או ארור בצורה "סדורה" כמו כאשר ארור ספציפי מסומן במספר.
בתוכנות עם מערכת טיפול שגיאות יעילה, במקרים רבים יש המון אזהרות וארורים אשר הניסוח המילולי שלהם דומה ולכן בכדי לוודא הבחנה ביניהם, בעיקר מצד משתמש קצה שאיננו בהכרח בקיא בתיעוד אזהרות וארורים או מכיר פרקטיקות מקובלות בנושא או שקשה להעתיק את הפלט (אם הפלט הוא תמונה למשל).
לעתים מוטב לדווח על האזהרה או על הארור לצוות הפיתוח של התוכנה (או לחפש עליו מידע) דווקא לפי קוד מצב ולא לפי תוכן טקסטואלי קונקרטי כי לפעמים הטקסט של תוכן הארור המילולי לא העותק נכונה או לא העותק במדויק.
מה זה באג תוכנה
באג תוכנה (באנגלית: Software bug) אני מגדיר ככל בעיה בתוכנה שלפחות בפעם הראשונה בה התרחשה הייתה בלתי צפויה.
במקרים רבים באג יגרום להפסקת תהליך מסוים באמצעו (ואף לקריסת תוכנה); ללא ארור או עם ארור.
גורמים אפשריים לבאגים
באג בדרך כלל נובע מטעות בקוד מקור או בקוד המכונה של תוכנה.
- שגיאה לוגית
- שגיאה תחבירית כמו תו שגוי בקוד מקור (לדוגמה, פסיק במקום נקודה או סימן שוויון אחד במקום שניים וכדומה).
מצבים אלה ייתכנו גם בשל פרצות אבטחה הגורמות לזריקת קוד זדונית; כמו כן, ניתן לתפוש כבאג גם אי האפשרות להתחיל תהליך תוכנה בשל התנגשות בין גרסת מערכת הפעלה לבין התוכנה שמריצים
מניעת באגים
מניעת באגים נקראת די-באגינג (באנגלית: Debugging) וניתן לבצעה דרך תכנון נכון, בידוד בעיה, מנגנון טוב לדיווח על שגיאות, בדיקת תוכנה טובה (בדיקת כמה שיותר מצבי פלט כלליים) ועוד.
ניתן לצמצם הסיכוי לבאגים בעבודה עם ניהול גרסאות וכן שמירת מצבים של תוכנה מהם ניתן להמשיך אחרת מבלי להיתקל בבאג.