J'apprends Ruby et j'ai rencontré le fail
mot - clé. Qu'est-ce que ça veut dire?
if password.length < 8
fail "Password too short"
end
unless username
fail "No user name set"
end
J'apprends Ruby et j'ai rencontré le fail
mot - clé. Qu'est-ce que ça veut dire?
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
etfail "No user name set" unless username
Réponses:
Dans Ruby, fail
est synonyme de raise
. Le fail
mot-clé est une méthode du Kernel
module qui est incluse par la classe Object
. La fail
méthode génère une erreur d'exécution comme le raise
mot clé.
La fail
méthode a trois surcharges:
fail
: déclenche un RuntimeError
sans message d'erreur.
fail(string)
: lève un RuntimeError
avec 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 ArgumentError
et non un RuntimeError
:
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 du rescue
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 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.
raise
Rubocop parle de l'utilisation des deux mots;
«Utilisez
fail
au lieu deraise
pour signaler les exceptions.»'Utiliser
raise
au lieu defail
pour renvoyer les exceptions.'
Voici un exemple.
def sample
fail 'something wrong' unless success?
rescue => e
logger.error e
raise
end
fail
== raise
En d'autres termes, fail
c'est juste un alias populaire pour raise
la méthode de levée d' erreurs. Usage:
fail ArgumentError, "Don't argue with me!"
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.