פייתון/פייתון גרסה 3/סוגים של שגיאות

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי
קפיצה לניווט קפיצה לחיפוש


Edit-undo.svg

שקול לדלג על נושא זה

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



שגיאה לקסיקונית[עריכה]

שגיאה לקסיקונית (Lexical Errors) קוראת כאשר אנו משתמשים במילה שפייתון אינו מכיר. לעיתים שגיאה זו היא גם תחבירית:

for row ind range(5):
# ind is a lexical errow
    print(row)

קבלנו הודעת שגיאה "invaild syntax".

נתקן את "ind" ל-"in" והתקלה תתוקן.

for row in range(5):
# ind is a lexical errow
    print(row)


שגיאה תחבירית[עריכה]

שגיאה תחבירית (Syntactic Errors) היא כאשר יש שגיאה בתחביר:

for row in range(5)
    print(row)

נבצע תיקון על ידי הוספת נקודתיים בסוף ה-for:

for row in range(5):
    print(row)

גם במקרה זה פייתון לא תתחיל את ההרצה.

שגיאה יישומית[עריכה]

שגיאה יישומית או ביצעות (Execution Errors) היא שגיאה הנגרמת בשל פקודה שלא ניתנת לביצוע:

L=[0,1,2,3,4]

for i in range(5):
    print(i/i-1)

לא ניתן לבצע חלוקה באפס ולכן פייתון הפסיק את ההרצאה והוסיף הערת שגיאה "ZeroDivisionError: division by zero".

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

שגיאה מכוונת[עריכה]

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

פתרונות לשגיאות[עריכה]

  1. לקרוא את הודעת השגיאה. לעיתים השגיאה מצביעה על מיקום לא נכון של השגיאה: שורה לפני או אחרי.
  2. להבחין בסוג השגיאה.
  3. אם מדובר על שגיאה מכוונת להריץ מקטע, מקטע ולבדוק כי מדובר בתוצאה שאנו מצפים.
    • להדפיס את המשתנים והתוצאות.
  4. להכיר את התקלות האופייניות שלך. למשל אם בדרך כלל אתם מסתבכים בלולאת for עם len תוודאו כי לא שם השגיאה.
  5. tester אכן לעצמך tester שיבדוק הרצאות בתוכנה שלך.