PracticU

Avoid Mismatch Input

בלי כתוביותעם כתוביות
PracticU › קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים › Avoid Mismatch Input
Avoid Mismatch Input
לפעמים המשתמש מזין ערך מסוג אחר לגמרי ממה שהתוכנית מבקשת, וזה יכול לגרום לקריסה. השיעור מראה את הבעיה ואת הסיבה לה.
השלבים העיקריים
1. קליטה תקינה: מבקשים שם ואחריו גיל. התוכנית עובדת כשמזינים ערכים מתאימים.
2. מספר במקום מחרוזת: הזנת 123 כשם מתקבלת בלי בעיה, כי גם זה טקסט.
3. מחרוזת במקום מספר: הזנת ABC לשדה הגיל גורמת לחריגה בשם InputMismatchException, והתוכנית קורסת.
4. מספר עשרוני במקום שלם: הזנת 12.5 לשדה הגיל גורמת לאותה חריגה, כי nextInt() מקבל רק מספר שלם.
5. הקריסה: כשחריגה לא מטופלת, התוכנית נעצרת, והפלט של השורות הבאות לא מופיע.
שימו לב
טיפול בחריגות דורש ידע בתכנות מונחה עצמים, ולכן בשלב הזה כדאי להימנע ממצבים כאלה. בשלב הזה מניחים שהמשתמש מזין ערכים נכונים.
השיעור הבא בקורס: תרגול לפרק של User Input
מילון מושגים:
מחרוזת – סוג נתונים שמייצג רצף של תווים, כלומר טקסט, ומשמש לאחסון מילים, משפטים או כל רצף סימנים.
חריגה – מצב שגיאה שמתרחש בזמן ריצת התוכנית ומפסיק את המהלך הרגיל, אלא אם הקוד תופס ומטפל בו.
OOP – תכנות מונחה עצמים: גישת פיתוח שמארגנת את הקוד סביב אובייקטים המאגדים נתונים ופעולות.

פרקי ההרצאה: Avoid Mismatch Input

  1. 00:00

    הכנסת נתונים רגילים לתוכנית

  2. 00:53

    בדיקה בסיסית לפני מקרי קצה

  3. 01:32

    הכנסת מספר במקום שם כמחרוזת

  4. 02:25

    הכנסת טקסט במקום מספר בקלט

  5. 03:05

    חריגה שלא טופלה גורמת לקריסה

  6. 03:41

    שגיאת InputMismatchException בתוכנית

  7. 04:37

    טיפול בקריסות דורש לימוד מתקדם

תמלול ההרצאה: Avoid Mismatch Input

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

  1. 00:02

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

  2. 00:16

    נניח שאנחנו באים ליוזר ואנחנו אומרים לו please enter your name, בואו נניח קודם כל ויש לנו כאן stream name שווה console read, סליחה next line, יש לנו please enter your h int h console next int נציג אותם הנה ה-name והנה ה-h תמיד כשאתם בודקים משהו בשביל לחפש שגיאות קודם כל תריצו ותראו שזה עובד כמו שצריך רק אחר

  3. 01:06

    כך תנסו להכניס מקרי קצה ולראות האם התוכנית קורסת במצבים מסוימים אבל לא מתחילים קודם כל לבדוק שגיאות קודם כל בודקים שהכל עובד. נריץ, נכניס מוישה 20, הכל עובד.

  4. 01:23

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

  5. 01:42

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

  6. 02:03

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

  7. 02:26

    כרגע בואו נראה מה קורה אם אנחנו עושים הפוך. יוזר הכניס מוישה ואז ב-age הוא הכניס מכרוזת שהיא לא מספר לדוגמה ABC. בואו נרווח רגע את הקונסול ונלחץ enter ועכשיו מה שקרה זה משהו שנקרא אקספשן או חריגה או קריסה של התוכנית.

  8. 02:53

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

  9. 03:12

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

  10. 03:21

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

  11. 03:34

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

  12. 03:53

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

  13. 04:22

    אפילו שהיא יכלה להציג את ה-Name, היא מיידית מפסיקה. איך לטפל בזה, זה מחוץ לקורס הזה, מפני שבשביל באמת להבין איך לטפל בקריסות, אתם צריכים קודם כל ללמוד את הקורס של Object Oriented, ורק לאחר מכן ללמוד Advanced Java, קצת נושאים יותר מתקדמים, ששם משתמשים בקונספט של

  14. 04:49

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

  15. 05:08

    נניח שהיוזר אומר שהוא בין 12 וחצי, גם כאן אנחנו רואים input mismatch exception והתוכנית בעצם קורסת.

לקורס המלא: קורס ג'אווה למתחילים אונליין

ההרצאה הקודמת: Handle Dirty Input

ההרצאה הבאה: תרגול לפרק של User Input

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

  • קלט מהמשתמש - User Input

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

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