Beachten Sie auch, dass Sie diese als einzeilige Anweisungen schreiben können: fail "Password too short" if password.length < 8undfail "No user name set" unless username
PhilT
Antworten:
135
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.
+1 für Stilberatung; Selbst wenn sie semantisch identisch sind, hilft die Verwendung jeder in ihrer beabsichtigten Einstellung, die Absicht besser zu vermitteln
Fatuhoku
26
fail == raise
Mit anderen Worten, failist nur ein beliebter Alias für raisedie Methode zur Fehlerbehebung. Verwendung:
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.
Woot, das ist wirklich ein Fehler. Codebeispiel für Fehler ist Kopieren-Einfügen von Raise o_O
Vajk Hermecz
4
@VajkHermecz fail ist ein Alias für das Erhöhen, daher wird die Dokumentation wiederverwendet. Vergleichen Sie mit den Dokumenten für Array # map und Array # collect
raise
beim Umgang mit Ausnahmen undfail
wenn nicht verwenden.fail "Password too short" if password.length < 8
undfail "No user name set" unless username
Antworten:
In Ruby
fail
ist gleichbedeutend mitraise
. Dasfail
Schlüsselwort ist eine Methode desKernel
Moduls, die in der Klasse enthalten istObject
. Diefail
Methode löst genau wie dasraise
Schlüsselwort einen Laufzeitfehler aus .Die
fail
Methode hat drei Überladungen:fail
: löst eineRuntimeError
ohne Fehlermeldung aus.fail(string)
: löst einRuntimeError
mit dem String-Argument als Fehlermeldung aus:fail(exception [, string [, array]])
: löst eine Ausnahme von Klasseexception
(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 keinRuntimeError
:Ein weiteres Beispiel: Sie können die gesamte Rückverfolgung an die
fail
Methode übergeben, um auf die Ablaufverfolgung innerhalb desrescue
Blocks zuzugreifen :caller
ist eine Kernel-Methode, die die Rückverfolgung als Array von Zeichenfolgen im Formular zurückgibtfile:line: in 'method'
.Quelle: Ruby-Dokumentation auf dem Kernelmodul .
quelle
raise
Rubocop sagt über die Verwendung beider Wörter;
Hier ist ein Beispiel.
quelle
fail
==raise
Mit anderen Worten,
fail
ist nur ein beliebter Alias fürraise
die Methode zur Fehlerbehebung. Verwendung:quelle
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.quelle