Menu
Coddy logo textTech

סעיפי rescue מרובים

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Ruby של Coddy. שיעור 45 מתוך 56.

בלוק begin אחד יכול לכלול כמה סעיפי rescue. Ruby בודקת אותם מלמעלה למטה ומפעילה את הראשון שמחלקת החריגה שלו תואמת.

begin
  number = Integer(gets.chomp)
  result = 100 / number
  puts result
rescue ArgumentError
  puts "That's not a valid number."
rescue ZeroDivisionError
  puts "Can't divide by zero."
end

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

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

begin
  risky_call
rescue ArgumentError, TypeError => e
  puts "Bad input: #{e.message}"
end

השתמש בזה כאשר קוד השחזור זהה לכמה מצבי כשל.

challenge icon

אתגר

קל

קראו שתי שורות מהקלט, שתיהן אמורות להיות מספרים שלמים. השתמשו ב־Integer(...) עבור שתיהן, ואז חלקו את הראשונה בשנייה.

טפלו בשלושה מקרים באמצעות ענפי rescue נפרדים:

  • ArgumentError → הדפיסו Bad number!
  • ZeroDivisionError → הדפיסו Cannot divide by zero!
  • TypeError → הדפיסו Wrong type!

אם הכול עובד, הדפיסו Result: <a / b> (חלוקת מספרים שלמים).

עבור הקלט 10 / 2, הפלט הוא Result: 5. עבור 10 / 0, Cannot divide by zero!. עבור 10 / abc, Bad number!.

נסו בעצמכם

raw_a = gets.chomp
raw_b = gets.chomp

# TODO: begin ... rescue ArgumentError ... rescue ZeroDivisionError ... rescue TypeError ... end
quiz iconבחנו את עצמכם

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

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר Ruby אונליין