פייתון/פייתון גרסה 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("hello")

>>> print("hello")
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

דוגמה רביעית[עריכה]

x=2
x/0
print(x)

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

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