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

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

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

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

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

גם ב-idle קיים קונסול. דוגמה:

>>> print(hello)
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    print(hello)
NameError: name 'hello' is not defined

ניסנו לבצע הרצה של הדפס עם תווים.

פיתון אינה מוכנה להריץ את התכונה ורושמת לנו איזה קובץ גורם בעיה להרצה: הקובץ ששמו pyshell#0 , בשורה ראשונה במופע "print(hello)" גורם לתקלה והסיבה (תחת NameError) היא שהתווים אינם מוגדרים. מה זאת אומרת? בכדי להריץ תווים הם חייבים להיות מוגדרים כמחרוזת אחרת פיתון חושבת שהם רצף של קוד וכאשר היא אינה מזהה קוד בשם "hello" היא מציינת כי הוא אינו מוגדר.

דוגמה:

>>> print(1)
1
>>> print('a'+1)
Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    print('a'+1)
TypeError: must be str, not int


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

print('a'+'1')
a1


דוגמה נוספת:

	>>> 2+2
4
>>> 2+t
Traceback (most recent call last):
  File "<pyshell#8>", line 1, in <module>
    2+t
NameError: name 't' is not defined

דוגמה 3:

x=2
x/0
print(x)


Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    x/0
ZeroDivisionError: division by zero

לא יאפשר להריץ כי חלוקה באפס.