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 Sie keine Ausnahmeklasse angeben, fängt rescue für sich alleine StandardError und dessen Unterklassen ab, was die meisten alltäglichen Fehler abdeckt. Das Abfangen ist am nützlichsten, wenn Sie im Rescue-Block etwas tun können: 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