begin / rescue
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Ruby של Coddy. שיעור 44 מתוך 56.
כדי למנוע מחריגה לגרום לקריסת התוכנית שלך, עטוף את הקוד המסוכן ב־begin ... rescue ... end. אם משהו בתוך begin מעלה חריגה, Ruby קופץ לבלוק rescue התואם במקום להפסיק את פעולת התוכנית.
begin
result = 10 / 0
puts result
rescue ZeroDivisionError
puts "Cannot divide by zero!"
end
# אי אפשר לחלק באפס!אפשר לקבל את אובייקט החריגה עצמו באמצעות => e ולקרוא את .message שלו:
begin
Integer("hello")
rescue ArgumentError => e
puts "Bad input: #{e.message}"
end
# קלט שגוי: ערך לא תקין עבור Integer(): "hello"אם לא מציינים מחלקת חריגה, rescue לבדו תופס את StandardError ואת מחלקות הצאצא שלה, כלומר את רוב הכשלים היומיומיים. תפיסת חריגות מועילה ביותר כשאפשר לעשות משהו בתוך בלוק ה־rescue: להציב ערך ברירת מחדל, לתעד את הבעיה או לבקש מהמשתמש לנסות שוב.
אתגר
קלקרא שתי שורות מהקלט. שתיהן אמורות להיות מספרים שלמים, אבל ייתכן שהשנייה אינה מספר תקין.
עטוף את ניתוח השורה השנייה ב-begin / rescue:
- השתמש ב-
Integer(input)(שמעלהArgumentErrorאם המחרוזת אינה תקינה) - אם הניתוח מצליח, הדפס
Sum: <a + b> - אם הוא נכשל, הדפס
Bad number!
עבור הקלט 3 ואז 4, הפלט הוא Sum: 7. עבור 3 ואז abc, הפלט הוא Bad number!.
נסו בעצמכם
a = gets.to_i
raw_b = gets.chomp
# TODO: להוסיף begin/rescue סביב Integer(raw_b); להדפיס את הסכום או את הטקסט המדויק מההוראות
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
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 אונליין