מהי חריגה?
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Ruby של Coddy. שיעור 43 מתוך 56.
כשמשהו משתבש בזמן הריצה — חלוקה באפס, ניתוח של "abc" כמספר שלם, קריאה למתודה על nil — Ruby מעלה חריגה. התוכנית נעצרת, ו-Ruby מדפיסה מה קרה וגם היכן זה קרה.
10 / 0
# ZeroDivisionError: חילוק ב-0כל סוג של כשל הוא מחלקה בפני עצמה. כמה נפוצים:
ZeroDivisionError: חלוקה של מספר שלם באפסArgumentError: ארגומנטים שגויים שהועברו למתודה (Integer("abc"))
NoMethodError: קריאה למתודה שלמקבל אין (nil.upcase)TypeError: ביצוע פעולה על סוג אובייקט שגוי ("a" + 1)
לכל מחלקת חריגות יש .message: תיאור קריא לבני אדם ש-Ruby מדפיסה כשהחריגה אינה מטופלת. בשיעורים הבאים נראה איך לתפוס את החריגות האלה כדי שהתוכנית שלך תמשיך לפעול.
אתגר
מתחיליםקרא שורת קלט אחת, שם של ביטוי Ruby יחיד. הדפס את שם מחלקת החריגה ש-Ruby היה מעלה עבורו. השתמש במשפט case (אין צורך להעלות חריגה בפועל):
divide-by-zero→ZeroDivisionErrornil-method→NoMethodErrorbad-integer→ArgumentErrorwrong-type→TypeError- כל דבר אחר →
Unknown
עבור הקלט nil-method, הפלט הוא NoMethodError.
נסו בעצמכם
kind = gets.chomp
# TODO: case kind ... הדפס את שם מחלקת החריגה המתאימה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מחרוזות לעומק
סקירה של מתודות למחרוזותאינטרפולציה של מחרוזותמעבר על מחרוזותפיצול וחיבורסיכום – שוזר המחרוזות4בלוקים, Procs ו־Lambdas
מהו בלוק?do..end לעומת סוגריים מסולסליםמילת המפתח yieldפרמטרים של בלוקProcs ו־Lambdasסיכום – איטרטור מותאם אישית7Hashes חלק 2
Hash.new עם ערכי ברירת מחדלמעבר על HashesHashes מקונניםמיזוג ושינויסיכום - מונה תדירויות10פרויקט - רשומות תלמידים
סקירת הפרויקטהוספת תלמיד5עוצמת Enumerable
Select ו־Rejectשרשור MapReduce / Injectcount, all?, any?, none?group_by ו־partitionsort_by, min_by, max_byסיכום - צינור נתוניםתרגלו בעצמכם: קומפיילר Ruby אונליין