עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

טיפול ב-Exceptions

Featured Replies

פורסם

חג שמח :yelclap:

אני מתכנת ב-C# אבל בטוח שהנושא רלוונטי לרוב השפות (לפחות java ו-c++),

רציתי לדעת איך אני מטפל "נכון" בחריגים.

אני עובד על פרוייקט שמורכב ממחלקה ראשית ומחלקה שכותבת ל-DB (לוג על הפעולות במערכת).

אם למשל נזרקת שגיאה בפתיחת החיבור ל-DB, איפה אני תופס את השגיאה ומציג אותה למשתמש?

מבחינת תכנון נכון, האם אני צריך לתפוס את השגיאה במחלקה הראשית?

האם כל הפונ' שקוראת לפונ' שעלולה לזרוק שגיאה צריך להיות מורכבת מבלוק try ו-catch?

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

תודה :xyxthumbs:

פורסם

זה תלוי בלוגיקה של התוכנית. אם אתה בפונקציה X קורא לפונקציה Y שיכולה לזרוק חריג E ופונקציה Y יכולה לטפל בחריג הזה אז אתה מטפל בו בפונקציה Y, אם לא אז זה יזרק לקורא של Y.

עכשיו בקשר לאיך מטפלים. שוב זה תלוי בחריג, אם זה חריג שיכול להיפטר לדוגמא אם אתה מנסה לפתוח קובץ LOG.TXT אבל הוא לא קיים אז אתה יכול להודיע למשתמש שקובץ LOG.TXT לא קיים ואני הולך להשתמש בקובץ TEMP.TXT (או לדוגמא קובץ הגדרות של תוכנית, אם הוא לא קיים אתה מודיע שהוא לא קיים, ומשתמש בהגדרות ברירת מחדל) ואז אתה יכול להמשיך ב EXECUTION, מצד שני אם אתה מקבל חריג של NullPointerException (או NullReferenceException ב C#) אז אין לך איך לטפל בזה ואתה צריך לסגור את התוכנית ולהודיע על שגיאה.

פורסם

הרעיון העיקרי בשימוש ב-exceptions (ולמעשה אחת מהמטרות שלשמן הן נוצרו) זה ש-exception כדאי לתפוס בקטע של התוכנית שיכול לטפל בשגיאה.

לדוגמא: אם יש שגיאה בכתיבה לקובץ באמצע פעולה פנימית, אפשר לתפוס ולטפל ב-Exception בבלוק חיצוני יחסית (לדוגמא ע"י הצגת הודעת שגיאה מתאימה).

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

לגבי C++ יש סט של חוקים בסיסיים (המלצות) לגבי מה לזרוק, מה לתפוס, ואיך לעשות את זה בצורה בטוחה.

התחלה למי שמעוניין: http://www.parashift.com/c++-faq-lite/exceptions.html

עריכה: נראה לי שחלק מהסעיפים גם יעזרו בשפות אחרות כמו JAVA או C#.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.