Ich lerne Ruby und bin auf das failSchlüsselwort gestoßen . Was heißt das?
if password.length < 8
fail "Password too short"
end
unless username
fail "No user name set"
end
Ich lerne Ruby und bin auf das failSchlüsselwort gestoßen . Was heißt das?
if password.length < 8
fail "Password too short"
end
unless username
fail "No user name set"
end
fail "Password too short" if password.length < 8undfail "No user name set" unless username
Antworten:
In Ruby failist gleichbedeutend mit raise. Das failSchlüsselwort ist eine Methode des KernelModuls, die in der Klasse enthalten ist Object. Die failMethode löst genau wie das raiseSchlüsselwort einen Laufzeitfehler aus .
Die failMethode hat drei Überladungen:
fail: löst eine RuntimeErrorohne Fehlermeldung aus.
fail(string): löst ein RuntimeErrormit dem String-Argument als Fehlermeldung aus:
fail "Failed to open file"fail(exception [, string [, array]]): löst eine Ausnahme von Klasse exception(erstes Argument) mit einer optionalen Fehlermeldung (zweites Argument) und Rückrufinformationen (drittes Argument) aus.
Beispiel: Angenommen, Sie definieren eine Funktion, die bei einem schlechten Argument fehlschlagen sollte. Es ist besser, ein ArgumentErrorund kein RuntimeError:
fail ArgumentError, "Illegal String"
Ein weiteres Beispiel: Sie können die gesamte Rückverfolgung an die failMethode übergeben, um auf die Ablaufverfolgung innerhalb des rescueBlocks zuzugreifen :
fail ArgumentError, "Illegal String", caller
callerist eine Kernel-Methode, die die Rückverfolgung als Array von Zeichenfolgen im Formular zurückgibt file:line: in 'method'.
Löst ohne Argumente die Ausnahme in $ aus! oder löst einen RuntimeError aus, wenn $! ist null. Löst mit einem einzelnen String-Argument einen RuntimeError mit dem String als Nachricht aus. Andernfalls sollte der erste Parameter der Name einer Ausnahmeklasse sein (oder eines Objekts, das beim Senden einer Ausnahmemeldung ein Ausnahmeobjekt zurückgibt). Der optionale zweite Parameter legt die der Ausnahme zugeordnete Nachricht fest, und der dritte Parameter ist ein Array von Rückrufinformationen. Ausnahmen werden durch die Rettungsklausel von Anfangs- und Endblöcken erfasst.
Quelle: Ruby-Dokumentation auf dem Kernelmodul .
raise
Rubocop sagt über die Verwendung beider Wörter;
"Verwenden Sie
failstattraise, um Ausnahmen zu signalisieren.""Verwenden Sie
raisestattfailAusnahmen erneut zu werfen."
Hier ist ein Beispiel.
def sample
fail 'something wrong' unless success?
rescue => e
logger.error e
raise
end
fail == raise
Mit anderen Worten, failist nur ein beliebter Alias für raisedie Methode zur Fehlerbehebung. Verwendung:
fail ArgumentError, "Don't argue with me!"
www.ruby-doc.org ist dein Freund. Als ich gegoogelt habe, war rubydoc fail" Kernel " der erste Treffer. Mein Rat ist, im Zweifelsfall zur endgültigen Quelle für solche Definitionssachen zu gehen.
raisebeim Umgang mit Ausnahmen undfailwenn nicht verwenden.