Don't
...היא התשובה לשאלה הבאה שנשאלתי השבוע:
"מהי הדרך המומלצת ביותר לטפל ב- Exceptions ביישום שלי?"
זה אולי נשמע לא אינטואיטיבי ולא נכון, אבל האמת שלטעמי זו דרך הפעולה המועדפת. אלא אם כן יש סיבה טובה מאוד לעשות את זה - אל תטפלו ב- Exceptions. אל תמלאו את הקוד שלכם ב- Try...Catch לא נחוצים אל תתפסו כל סוג שגיאה שאתם חושבים שעלול להתעורר ביישום.
הסיבה לכך פשוטה מאוד - בהרבה מאוד מקרים, אין לנו מה לעשות עם ה- Exception חוץ מאשר לרשום אותו ללוג, ואת זה אפשר לעשות במקום מרכזי אחד. לא צריך לבצע את זה בכל פונקציה או Property.
בכלל, נראה לי שלעתים הטיפול ב- Exception נמצא בידיים הלא נכונות, והחשיבה הטיפוסית היא שזה משהו שתוכניתנים בלבד אחראים לו. אני טוען שטיפול בשגיאות ביישום הוא משהו שצריך לעבור גם דרך האחראים על האפיון, שצריכים לתת את הדעת לגבי אופן הפעולה הנדרש כאשר היישום נכשל. לדוגמה - מה אמור לקרות כאשר לא ניתן לגשת למקורות מידע מסויימים לשם שליפת מידע, אבל מקורות אחרים פועלים כראוי? האם היישום צריך "לעוף"? האם המשתמש צריך לקבל הודעה אבל להמשיך לעבוד כרגיל? אלו לא החלטות שתוכניתן צריך, ורשאי, להחליט. זו החלטה אפיונית טהורה.
הנושא הזה הוא רחב מאוד, ולא ניתן לסכם אותו בפוסט קצר אחד, אבל יש להבין שטיפול ב- Exception הוא לא משהו שעושים כלאחר יד, ולא משהו שמשאירים לרגע האחרון. יש לגבש תפיסה מקיפה ואחידה לגבי הטיפול בנושא זה כמה שיותר מוקדם.
מקור מצויין לתפיסה שכזו נמצא בקישור הבא:
http://msdn.microsoft.com/en-us/library/ms229014(VS.80).aspx
מומלץ לקרוא!