In Ruby können Sie am Ende einer Zuweisung ein rescue
schreiben, um eventuell auftretende Fehler zu erkennen. Ich habe eine Funktion (unten: a_function_that_may_fail
), wo es bequem ist, einen Fehler auszulösen, wenn bestimmte Bedingungen nicht erfüllt sind. Der folgende Code funktioniert gut
Allerdings hätte ich gerne post ['Caption'] nicht einmal gesetzt, wenn die Funktion fehlschlägt.
Ich weiß, dass ich tun kann:
%Vor%aber das fühlt sich etwas übertrieben an - gibt es eine einfachere Lösung?
Das Problem hat Vorrang. Die einfachste Lösung:
%Vor% Das Ändern der Priorität ist jedoch ein wenig esoterisch. Es wäre wahrscheinlich besser, wenn Sie Ihre a_function_that_may_fail
neu schreiben könnten, um nil
zurückzugeben, wenn sie fehlschlägt.
Sie können auch eine temporäre Variable verwenden und auf Nilness testen:
%Vor% Ein wirklich kleiner Unterschied ist, dass dies post['Caption']
nicht setzt, wenn a_function_that_may_fail
keine Ausnahme ausgelöst hat, sondern nil
zurückgegeben hat.
Stellen Sie sicher, dass Ihre Methode entweder nil
oder false
:
Sie können dann den if-Modifikator verwenden, um den Rückgabewert Ihrer Methode zu überprüfen und den Wert nur zuweisen, wenn es nicht nil
oder false
:
oder Sie können den Rückgabewert von this_may_fail
in einer lokalen Variablen zwischenspeichern, wenn Sie die Methode für die if-Bedingung und -Zuordnung nicht zweimal aufrufen möchten.
Beachten Sie auch, dass der Modifizierer rescue
nur StandardError
und seine Unterklassen abfängt.
Tags und Links ruby exception-handling