Notez également que vous pouvez les écrire sous forme d'instructions sur une seule ligne: fail "Password too short" if password.length < 8etfail "No user name set" unless username
PhilT
Réponses:
136
Dans Ruby, failest synonyme de raise. Le failmot-clé est une méthode du Kernelmodule qui est incluse par la classe Object. La failméthode génère une erreur d'exécution comme le raisemot clé.
La failméthode a trois surcharges:
fail: déclenche un RuntimeErrorsans message d'erreur.
fail(string): lève un RuntimeErroravec l'argument chaîne comme message d'erreur:
fail "Failed to open file"
fail(exception [, string [, array]]): lève une exception de classe exception(premier argument) avec un message d'erreur optionnel (deuxième argument) et des informations de rappel (troisième argument).
Exemple: Supposons que vous définissiez une fonction qui devrait échouer si un argument incorrect est donné. Il vaut mieux élever un ArgumentErroret non un RuntimeError:
fail ArgumentError, "Illegal String"
Un autre exemple: vous pouvez passer la totalité de la trace arrière à la failméthode afin de pouvoir accéder à la trace à l'intérieur du rescuebloc:
fail ArgumentError, "Illegal String", caller
callerest une méthode Kernel qui renvoie la trace arrière sous la forme d'un tableau de chaînes dans le formulaire file:line: in 'method'.
Sans argument, lève l'exception dans $! ou lève une RuntimeError si $! est nul. Avec un seul argument String, déclenche une RuntimeError avec la chaîne en tant que message. Sinon, le premier paramètre doit être le nom d'une classe Exception (ou un objet qui renvoie un objet Exception lors de l'envoi d'un message d'exception). Le deuxième paramètre facultatif définit le message associé à l'exception et le troisième paramètre est un tableau d'informations de rappel. Les exceptions sont interceptées par la clause de sauvetage des blocs begin ... end.
+1 pour les conseils de style; même s'ils sont identiques sur le plan sémantique, utiliser chacun dans leur cadre prévu permet de mieux transmettre l'intention
fatuhoku
26
fail == raise
En d'autres termes, failc'est juste un alias populaire pour raisela méthode de levée d' erreurs. Usage:
www.ruby-doc.org est votre ami. Quand j'ai googlé rubydoc fail" Kernel " a été le premier succès. Mon conseil est, en cas de doute, d'aller à la source définitive pour des éléments de définition comme celui-ci.
raise
pour gérer les exceptions etfail
quand ce n'est pas le cas.fail "Password too short" if password.length < 8
etfail "No user name set" unless username
Réponses:
Dans Ruby,
fail
est synonyme deraise
. Lefail
mot-clé est une méthode duKernel
module qui est incluse par la classeObject
. Lafail
méthode génère une erreur d'exécution comme leraise
mot clé.La
fail
méthode a trois surcharges:fail
: déclenche unRuntimeError
sans message d'erreur.fail(string)
: lève unRuntimeError
avec l'argument chaîne comme message d'erreur:fail "Failed to open file"
fail(exception [, string [, array]])
: lève une exception de classeexception
(premier argument) avec un message d'erreur optionnel (deuxième argument) et des informations de rappel (troisième argument).Exemple: Supposons que vous définissiez une fonction qui devrait échouer si un argument incorrect est donné. Il vaut mieux élever un
ArgumentError
et non unRuntimeError
:fail ArgumentError, "Illegal String"
Un autre exemple: vous pouvez passer la totalité de la trace arrière à la
fail
méthode afin de pouvoir accéder à la trace à l'intérieur durescue
bloc:fail ArgumentError, "Illegal String", caller
caller
est une méthode Kernel qui renvoie la trace arrière sous la forme d'un tableau de chaînes dans le formulairefile:line: in 'method'
.Source: Documentation Ruby sur le module du noyau .
la source
raise
Rubocop parle de l'utilisation des deux mots;
Voici un exemple.
def sample fail 'something wrong' unless success? rescue => e logger.error e raise end
la source
fail
==raise
En d'autres termes,
fail
c'est juste un alias populaire pourraise
la méthode de levée d' erreurs. Usage:fail ArgumentError, "Don't argue with me!"
la source
www.ruby-doc.org est votre ami. Quand j'ai googlé
rubydoc fail
" Kernel " a été le premier succès. Mon conseil est, en cas de doute, d'aller à la source définitive pour des éléments de définition comme celui-ci.la source