Ruby:
Fehlerbehandlung

Wie geht das:

Ruby verwendet begin, rescue, ensure und end, um Fehler zu behandeln. Man umgibt den riskanten Code mit begin und end. Tritt ein Fehler auf, springt rescue ein.

begin
  # Riskanter Code kommt hier hin.
  puts 10 / 0
rescue ZeroDivisionError => e
  puts "Hoppla! Das können Sie nicht tun: #{e.message}"
ensure
  puts "Das wird immer ausgeführt, mit oder ohne Fehler."
end

Beispielausgabe:

Hoppla! Das können Sie nicht tun: divided by 0
Das wird immer ausgeführt, mit oder ohne Fehler.

Vertiefung

Historisch gesehen hat sich die Fehlerbehandlung in Programmiersprachen erheblich weiterentwickelt, wobei frühe Sprachen oft grobe oder nicht existente Mechanismen hatten. Rubys Ausnahmebehandlung ist von Sprachen wie Python und Smalltalk inspiriert.

Alternativen zum begin-rescue in Ruby schließen die Verwendung von rescue in Methodendefinitionen ein, oder das Verwenden von throw und catch für nicht standardisierte Ablaufsteuerungen, obwohl diese nicht für typische Fehlerbehandlungen verwendet werden.

Ein interessantes Detail: Rubys Ausnahmen sind Objekte (Instanzen der Exception Klasse und deren Nachkommen), so dass man benutzerdefinierte Fehlerklassen definieren und mehr als nur Fehler protokollieren kann – man kann reichhaltigen Zustand durch das Programm tragen für eine robustere Fehlerbehandlung.

Siehe auch

  • Die Ruby-Dokumentation über Ausnahmen und Fehlerbehandlung: ruby-doc.org
  • Ein detaillierter Leitfaden zu den besten Praktiken der Fehlerbehandlung in Ruby: thoughtbot.com