PracticU

טיפול בשגיאות - Exception Handling

בלי כתוביותעם כתוביות
PracticU › קורס סלניום בסיסי - בדיקות אוטומטיות - Selenium › טיפול בשגיאות - Exception Handling
מילון מושגים:
חריגה - מצב שגיאה שמתרחש בזמן ריצת התוכנית ומפסיק את המהלך הרגיל, אלא אם הקוד תופס ומטפל בו.
אובייקט - יחידה בתכנות מונחה עצמים שמאגדת נתונים (תכונות) ופעולות (מתודות). נוצר בדרך כלל ממחלקה המשמשת כתבנית.
מערך - מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).
תנאי - ביטוי לוגי בקוד שתוצאתו אמת או שקר, וקובע אילו פקודות יתבצעו בהתאם לערכו.
לולאה - מבנה בקרה שחוזר על קטע קוד שוב ושוב כל עוד תנאי מתקיים או עבור כל פריט באוסף.
אינדקס - מבנה במסד נתונים שמאיץ חיפוש ושליפה. גם מספר המציין מיקום של איבר במערך.
משתנה - שם שמפנה למקום בזיכרון שבו נשמר ערך שיכול להשתנות במהלך ריצת התוכנית, כמו מספר, טקסט או אובייקט.
בוליאני - סוג נתונים שיכול לקבל אחד משני ערכים בלבד: אמת (true) או שקר (false).

טיפול בשגיאות - Exception Handling
השיעור מציג מהו exception בג'אווה ואיך מטפלים בו, כך שתקלה במהלך הריצה לא תעצור את התוכנית בלי תיעוד.
השלבים העיקריים
1. מה זה exception: תקלה שקורית במהלך הריצה, למשל בגלל קוד שלא נכתב מדויק, או בגלל שינוי במערכת שנבדקת. ג'אווה שומרת אותה כאובייקט מסוג Exception.
2. מה קורה בלי טיפול: אם לא מטפלים באובייקט, התוכנית נופלת ומפסיקה לרוץ.
3. דוגמה עם מערך: מערך של שלושה תאים (a, b, c) מודפס בלולאת for. כשתנאי הלולאה כולל גם את האינדקס 3, הריצה מגיעה לתא שלא קיים, ונזרקת השגיאה ArrayIndexOutOfBoundsException.
4. try ו-catch: את הקוד שעלול ליפול שמים בתוך בלוק try. בבלוק catch תופסים את האובייקט Exception ומדפיסים אותו עם e.printStackTrace().
5. finally: בלוק finally רץ תמיד, כל עוד קיים catch. לכן אפשר לכתוב בו סיכום, למשל משתנה בוליאני שמציין אם הריצה הצליחה.
שימו לב
בלי בלוק catch המערכת קורסת לפני שמגיעים ל-finally. תנאי לולאה נכון, כמו קטן מ-length, לא מפעיל את ה-catch.
בשיעור הבא נכיר עבודה עם קבצים, ואת האפשרות של ג'אווה לדחות טיפול בחריגה בעזרת throws.
השיעור הבא בקורס: עבודה עם קבצים בג'אווה - Reading Properties File

פרקי ההרצאה: טיפול בשגיאות - Exception Handling

  1. 00:00

    מה זה Exception ולמה לטפל בו

  2. 01:33

    מנגנון try, catch ו-finally

  3. 02:42

    הדגמה: מערך מחרוזות והדפסה בלולאה

  4. 04:27

    שגיאת ArrayIndexOutOfBoundsException בלולאה

  5. 05:24

    עטיפת הלולאה בבלוק try ו-catch

תמלול ההרצאה: טיפול בשגיאות - Exception Handling

הטקסט המלא של הדקות הראשונות בהרצאה «טיפול בשגיאות - Exception Handling» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    שלום לכולם בסרטון הקרוב נדבר על אקספצ'נס מה זה אקספצ'ן איך אנחנו מטפלים בו אז בואו נראה אקספצ'ן זו תקלה במהלך הריצה שלנו במהלך המהלך שהג'אווה רץ על הקוד שלנו מתרחשת איזושהי שגיאה שגיאה יכולה להתרחש בגלל קוד שלא כתוב נכון או בגלל טעות במערכת שאותה אנחנו בודקים או איזשהו שינוי במערכת שאנחנו בודקים שלא

  2. 00:35

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

  3. 00:56

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

  4. 01:08

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

  5. 01:29

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

  6. 01:39

    יש לנו את הסינסטאק של טריי קאץ' ופיינלי אותו תכף נכיר ודרכו אנחנו יכולים כאמור לקלוט את האקספשן את האובייקט הזה את הנפילה ולתעד להדפיס ולהמשיך בריצה אם נרצה אז בואו נלך ונעשה דמו קטן להמחשת אקספשן וטיפול באקספשן יצרתי בתוך פרויקט שקראתי לו פרקטיס אקספשן פקקג' אקספשן אנדלינג יצרתי בתוכה קלאס

  7. 02:10

    ובקלאס ציינתי public static void main. על מנת להראות איזשהו אקספצ'ן, איזשהו רנטם אקספצ'ן, אז אנחנו נרצה ליצור איזשהו מערך מסוג סטרינג, אנחנו נעשה השמה, סטרינג, סוגריים מרובעים, a1 נקרא לו, a1, נעשה לו כבר השמה תוך כדי הכרזה עליו, ונכניס פה איזה שהם משתנים,

  8. 02:53

    בואו נכניס לתוכו a, b ו-c, נבקש להדפיס אותם על ידי שימוש בלולת for פתיחת סוגיים החלת אינדקס int i שווה 0 ו-i כל עוד i קטן מ-a1 length שזה מחזיר לי את הגודל של המערך 1, 2, 3 ונקודה פסיק ולקדם את האינדקס i++. אוקיי אז יש לנו את המערך עכשיו רק נדפיס

  9. 03:28

    פה נעשה cso control space וסיסטם אאוט נדפיס את הvalue of index cell אז בואו פה נשרשר את המערך שלנו a1 סוגריים מרובעים כדי לפנות לאינדקס ונשתמש ב-i כדי להדפיס בואו נריץ את זה ונראה שזה עובד תקין אז אנחנו רואים value of index cell a b c אוקיי זה מספיק טוב בשבילנו בשביל הניסוי עכשיו כדי לראות את האקספצ'ן שלנו אנחנו רואים שהוא רץ

  10. 04:10

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

  11. 04:31

    הלנקס הוא שלוש. בואו נראה מה יקרה עכשיו. הוא באמת מדפיס את כל השלושת תאים הראשונים של הארי, אבל בפעם הרביעית שהוא מנסה לגשת כי הוא מתחיל באפס כבר אין לו שום סל בתוך ה-aray ואז הג'אווה לא יודעת איך להתמודד עם זה היא זורקת exception שהוא נקרא exception מסוג array index out of bounds

  12. 04:56

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

  13. 05:14

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

  14. 05:54

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

  15. 06:14

    צריך לגשת לספריית

לקורס המלא: קורס סלניום Selenium בסיסי

ההרצאה הקודמת: הורשה בג'אווה - inheritance

ההרצאה הבאה: עבודה עם קבצים בג'אווה - Reading Properties File

הרצאות קשורות מקורסים אחרים

  • Exception Handling
  • טיפול בחריגות - Exception Handling
  • Error Handling - טיפול בשגיאות
  • טיפול בשגיאות צד לקוח

קורסים נוספים במסלול

  • קורס מבוא ל-QA - מידע חשוב לבודק תוכנה
  • קורס פוסטמן - Postman - בדיקות לאתרי אינטרנט - API
  • קורס Robot Framework - בדיקות QA ממשק גרפי
  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס סלניום מתקדם - CI/CD - Continues Integration
  • קורס מייבן - Maven