
e.printStackTrace().הטקסט המלא של הדקות הראשונות בהרצאה «טיפול בשגיאות - Exception Handling» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם בסרטון הקרוב נדבר על אקספצ'נס מה זה אקספצ'ן איך אנחנו מטפלים בו אז בואו נראה אקספצ'ן זו תקלה במהלך הריצה שלנו במהלך המהלך שהג'אווה רץ על הקוד שלנו מתרחשת איזושהי שגיאה שגיאה יכולה להתרחש בגלל קוד שלא כתוב נכון או בגלל טעות במערכת שאותה אנחנו בודקים או איזשהו שינוי במערכת שאנחנו בודקים שלא
היינו מוכנים אליו בעצם לא נמצא איזשהו אובייקט, הקוד לא היה כתוב מספיק טוב ובעצם מה שקורה זה שהג'אווה לא יודעת להתמודד עם השגיאה הזאתי ומתרחשת נפילה. הנפילה הזאתי נשמרת בצורה של אובייקט מסוג אקספצ'ן.
עם האקספצ'ן הזה, האובייקט הזה, הג'אווה מצפה שאנחנו נתמודד איתו, נטפל בו. אם לא נטפל בו המערכת פשוט תזרוק את האקספצ'ן ותפסיק את העבודה.
ובדרך כלל לא נרצה שהמערכת תפסיק לעבוד בזמן אקספשן, אלא לתעד את האקספשן, להדפיס אותו, להוציא הודעה, לתעד, אולי לעשות השמה למשתנים מסוימים, אבל להשאיר את המערכת בשליטה וללא מצב שהיא נופלת ויוצאת ומפסיקה את הריצה שלה.
איך אנחנו יכולים לטפל באקספשן ככה שהוא לא יפסיק את הריצה שלנו ומוכן להתמודד עם שינויים באפליקציה או טעויות בקוד שלנו?
יש לנו את הסינסטאק של טריי קאץ' ופיינלי אותו תכף נכיר ודרכו אנחנו יכולים כאמור לקלוט את האקספשן את האובייקט הזה את הנפילה ולתעד להדפיס ולהמשיך בריצה אם נרצה אז בואו נלך ונעשה דמו קטן להמחשת אקספשן וטיפול באקספשן יצרתי בתוך פרויקט שקראתי לו פרקטיס אקספשן פקקג' אקספשן אנדלינג יצרתי בתוכה קלאס
ובקלאס ציינתי public static void main. על מנת להראות איזשהו אקספצ'ן, איזשהו רנטם אקספצ'ן, אז אנחנו נרצה ליצור איזשהו מערך מסוג סטרינג, אנחנו נעשה השמה, סטרינג, סוגריים מרובעים, a1 נקרא לו, a1, נעשה לו כבר השמה תוך כדי הכרזה עליו, ונכניס פה איזה שהם משתנים,
בואו נכניס לתוכו a, b ו-c, נבקש להדפיס אותם על ידי שימוש בלולת for פתיחת סוגיים החלת אינדקס int i שווה 0 ו-i כל עוד i קטן מ-a1 length שזה מחזיר לי את הגודל של המערך 1, 2, 3 ונקודה פסיק ולקדם את האינדקס i++. אוקיי אז יש לנו את המערך עכשיו רק נדפיס
פה נעשה cso control space וסיסטם אאוט נדפיס את הvalue of index cell אז בואו פה נשרשר את המערך שלנו a1 סוגריים מרובעים כדי לפנות לאינדקס ונשתמש ב-i כדי להדפיס בואו נריץ את זה ונראה שזה עובד תקין אז אנחנו רואים value of index cell a b c אוקיי זה מספיק טוב בשבילנו בשביל הניסוי עכשיו כדי לראות את האקספצ'ן שלנו אנחנו רואים שהוא רץ
מאפס, עובר לאחד, שתיים, ואז הוא קטן משלוש, הוא עוצר. אז יש לנו אפס, אחד, שתיים. עכשיו, אם אנחנו נעשה במקום שווה, במקום קטן או קטן ושווה, זאת אומרת, הוא יעבור את השתיים וינסה להגיע גם לשלישי.
הלנקס הוא שלוש. בואו נראה מה יקרה עכשיו. הוא באמת מדפיס את כל השלושת תאים הראשונים של הארי, אבל בפעם הרביעית שהוא מנסה לגשת כי הוא מתחיל באפס כבר אין לו שום סל בתוך ה-aray ואז הג'אווה לא יודעת איך להתמודד עם זה היא זורקת exception שהוא נקרא exception מסוג array index out of bounds
exception זאת אומרת יציאה מגבולות המערך והיא בעצם מעיפה את השגיאה הזאת היא לא יכולה להתמודד עם זה אם אני אוריד את השווה ואריץ את זה עוד פעם הכל בסדר הוא הוא מגיע עד האינדקס 2 וזה בסדר.
אז ראינו את השגיאה ואנחנו בעצם רוצים להתמודד ברמה התיאורטית ברמת הקוד עם המצב שתהיה שגיאה במהלך הריצה על הלולה ולכן כמו שראינו במצגת נשתמש בtry והcatch ו-finally נגזור את הקוד הזה ונכניס לתוך הtry אוקיי ופה נעשה את הcatch אם אתה נופל אז תתייחס לאובייקט אקספצ'ן,
קונטרול ספייס. עכשיו, יש אפשרות פה לציין כל מיני סוגים של אקספצ'נים. לצורך העניין ולצורך הלימוד שלנו, אנחנו נשתמש באקספצ'ן כללי שהוא מכסה את כל היתר. מי שרוצה טיפול ספציפי באקספצ'ן, גם זה אפשרי.
צריך לגשת לספריית