תכנות מתקדם ב-Java/חריגות זמן ריצה: הבדלים בין גרסאות בדף
תוכן שנמחק תוכן שנוסף
ביטול גרסה 79834 של 84.229.155.32 (שיחה) |
Johnny Zoo (שיחה | תרומות) מוטיבציה |
||
שורה 1:
{{תכנות מתקדם ב-Java}}
פעמים רבות מגיעה תוכנית למצב בו משהו איננו כשורה, למשל - המשתמש הכניס קלט לא נכון, קובץ מסויים לא מצליח להיפתח, וכדומה. עד כה, הטיפול בבעיות כאלה הוגבל לבדיקות פשוטות שיכולנו לבצע כדי להימנע מהגעה למצב בעייתי עבור התוכנית
מנגנון משוכלל יותר לטיפול בבעיות הוא בעזרת '''חריגות זמן ריצה''' (באנגלית: '''Exceptions''').▼
מנגנון זה, למרות חיוניותו, הוא מוגבל, ועשוי להיות מסורבל. דוגמה לכך אפשר לראות דווקה משפת C, בה מנגנון חריגות אינו קיים. בשפה זו אפשר לראות קטע קוד שנראה בערך כך:
<source lang="c">
int ret;
data *a;
ret = do_something(a);
if (FAILED(ret)) {
goto fail;
}
ret = do_another_thing(a);
if (FAILED(ret)) {
goto fail;
}
ret = do_more(a);
if (FAILED(ret)) {
goto fail;
}
</source>
הקוד עצמו לא מעניין במיוחד. הנקודה העיקרית היא שאפשר לראות שורה של פעולות, אשר כל אחת מהן דורשת בדיקה נפרדת, מה שמביא לקוד ארוך ומסורבל. בדרך אגב נציין כאן שב-Java המילה goto היא אמנם מילה שמורה, אך אינה ממומשת - לא ניתן להשתמש בה (מסיבות טובות!). הסרבול לא מסתיים כאן. למשל, גישה "בטוחה" למערך (כלומר, כזו שלא תגרום לתכנית בלי מנגנון חריגות לקרוס) תדרוש לפחות שתי בדיקות: האיבר חיובי, וקטן מגודל המערך. במקרים אחרים, ניתן להגיע בקלות גם למספר גדול הרבה יותר של בדיקות. התוצאה - הקוד מסורבל, וקל מאוד לשכוח בדיקות חיוניות.
▲כדי להתגבר על בעיות אלו, הומצא מנגנון משוכלל יותר לטיפול בבעיות, הוא
==טיפול בחריגות==
|