עבור לתוכן

exeptions בC++

Featured Replies

פורסם

שלום

נניח ויש לי את התוכנית הבאה אשר מורכבת משלושה קלסים בשלשה קבצים שונים

1. RUN

2. NAME

3. BIRTHDAY DATE

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

איך אני עושה זאת עם EXEPTIONS?

אני לא יכול פשוט ל"זרוק" (THROW) ולקלוט בRUN כי אז ייאבד לי השם.

האם אני צריך ל"תפוס" (CATCH) בNAME, שם אני לא עושה כלום מלבד לזרוק לRUN, האם זה ייגן לי על השם?

תודה רבה לכל העוזרים וחג שמח

פורסם

ממה שכתבת לא ברור איפה נעשה הקלט עצמו.

עם exceptions, העיקרון הוא פשוט - מי שנתקל בשגיאה - זורק. מי שמסוגל להתמודד עם השגיאה - תופס.

פורסם

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

מטי.

פורסם
  • מחבר

אני יודע שזה כלי כבד אבל אין לי ברירה - אילוצי השאלה!

אני יודע שאני זורק ואז מישהו שמתמודד איתו תופס אבל אם יש לי כמו שכתבתי, איזה נתון באמצע שאני לא רוצה שיאבד כמו הNAME אז אני פשוט תופס אותו שם וממשיך לזרוק אותו בלי לבצע פעולה עליו - וככה בעצם הנתון הנ"ל של הNAME לא ימחק לי ?

תודה על התגובות המהירות

פורסם

זה נראה לי קצת דבילי שלכל משתנה יש class משלו, אבל יכול להיות שזה חלק מאילוצי השאלה (הדבילית).

לשאלה דבילית יש פיתרון דבילי, וזה אומר - בתוך בלוק של try לקרוא לפונקציה שקוראת את התאריך ולשים אותו בתוך המשתנה שלך, וב- catch פשוט לא לעשות כלום (גם לא לזרוק אותו הלאה), או עדיף אפילו - לשים במשתנה של התאריך ערך שיגיד לך שהתאריך לא חוקי.

מה שזה בעצם נותן לך זה להתעלם מקלט לא תקין.

ארכיון

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

דיונים חדשים