Ich lerne Ruby und bin auf das fail
Schlü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 fail
Schlü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 < 8
undfail "No user name set" unless username
Antworten:
In Ruby fail
ist gleichbedeutend mit raise
. Das fail
Schlüsselwort ist eine Methode des Kernel
Moduls, die in der Klasse enthalten ist Object
. Die fail
Methode löst genau wie das raise
Schlüsselwort einen Laufzeitfehler aus .
Die fail
Methode hat drei Überladungen:
fail
: löst eine RuntimeError
ohne Fehlermeldung aus.
fail(string)
: löst ein RuntimeError
mit 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 ArgumentError
und kein RuntimeError
:
fail ArgumentError, "Illegal String"
Ein weiteres Beispiel: Sie können die gesamte Rückverfolgung an die fail
Methode übergeben, um auf die Ablaufverfolgung innerhalb des rescue
Blocks zuzugreifen :
fail ArgumentError, "Illegal String", caller
caller
ist 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
fail
stattraise
, um Ausnahmen zu signalisieren.""Verwenden Sie
raise
stattfail
Ausnahmen 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, fail
ist nur ein beliebter Alias für raise
die 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.
raise
beim Umgang mit Ausnahmen undfail
wenn nicht verwenden.