Menu
Coddy logo textTech

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: להציב ערך ברירת מחדל, לתעד את הבעיה או לבקש מהמשתמש לנסות שוב.

challenge icon

אתגר

קל

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

עטוף את ניתוח השורה השנייה ב-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); להדפיס את הסכום או את הטקסט המדויק מההוראות
quiz iconבחנו את עצמכם

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

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

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