Menu
Coddy logo textTech

begin / rescue

Teil des Abschnitts Logik & Programmfluss der Ruby-Journey von Coddy. Lektion 44 von 56.

Um zu verhindern, dass eine Exception Ihr Programm zum Absturz bringt, umschließen Sie den risikobehafteten Code mit begin ... rescue ... end. Wenn etwas innerhalb von begin einen Fehler auslöst, springt Ruby zum passenden rescue-Block, anstatt abzubrechen.

begin
  result = 10 / 0
  puts result
rescue ZeroDivisionError
  puts "Cannot divide by zero!"
end
# Kann nicht durch Null teilen!

Sie können das Ausnahme-Objekt selbst mit => e abfangen und seine .message auslesen:

begin
  Integer("hello")
rescue ArgumentError => e
  puts "Bad input: #{e.message}"
end
# Ungültige Eingabe: invalid value for Integer(): "hello"

Wenn du keine Ausnahme-Klasse angibst, fängt rescue allein StandardError und dessen Unterklassen ab, also die meisten alltäglichen Fehler. Das Abfangen ist am nützlichsten, wenn du im Rescue-Block etwas tun kannst: einen Standardwert einsetzen, das Problem protokollieren oder den Benutzer erneut fragen.

challenge icon

Aufgabe

Einfach

Lies zwei Zeilen von der Eingabe ein. Beide sollten Ganzzahlen sein, aber die zweite ist möglicherweise keine gültige Zahl.

Ummantele das Parsen der zweiten Zeile mit begin / rescue:

  • Verwende Integer(input) (was bei einem ungültigen String einen ArgumentError auslöst)
  • Wenn das Parsen erfolgreich ist, gib Sum: <a + b> aus
  • Wenn es fehlschlägt, gib Bad number! aus

Für die Eingabe 3 und dann 4 lautet die Ausgabe Sum: 7. Für 3 und dann abc lautet sie Bad number!.

Probier es selbst

a = gets.to_i
raw_b = gets.chomp

# TODO: begin/rescue um Integer(raw_b); Summe ausgeben oder den exakten Text aus den Anweisungen
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Programmfluss

Übe selbstständig: Online-Ruby-Compiler