J’apprends Ruby et j’ai rencontré le mot clé fail
. Qu’est-ce que ça veut dire?
if password.length < 8 fail "Password too short" end unless username fail "No user name set" end
En Ruby, fail
est synonyme d’ raise
. Le mot-clé fail
est une méthode du module Kernel
incluse par la classe Object
. La méthode fail
déclenche une erreur d’exécution, tout comme le mot-clé raise
.
La méthode d’ fail
comporte trois surcharges:
fail
: déclenche une erreur RuntimeError
sans message d’erreur.
fail(ssortingng)
: déclenche un RuntimeError
avec l’argument de chaîne en tant que message d’erreur:
fail "Failed to open file"
fail(exception [, ssortingng [, array]])
: déclenche une exception d’exception de classe (premier argument) avec un message d’erreur facultatif (deuxième argument) et des informations de rappel (troisième argument).
Exemple: Supposons que vous définissiez une fonction qui devrait échouer si un mauvais argument lui est atsortingbué. Il est préférable de générer une ArgumentError
et non une RuntimeError
:
fail ArgumentError, "Illegal Ssortingng"
Autre exemple: vous pouvez passer la totalité de la trace à la méthode fail
afin de pouvoir accéder à la trace dans le bloc de rescue
:
fail ArgumentError, "Illegal Ssortingng", caller
caller
est une méthode du kernel qui retourne la trace comme un tableau de chaînes dans le file:line: in 'method'
formulaire file:line: in 'method'
.
Sans arguments, déclenche l’exception dans $! ou déclenche une RuntimeError si $! est nul. Avec un seul argument Ssortingng, déclenche un RuntimeError avec la chaîne en tant que message. Sinon, le premier paramètre doit être le nom d’une classe Exception (ou un object qui renvoie un object 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 sockets en compte par la clause de secours des blocs finaux begin….
Source: Documentation Ruby sur le module du kernel .
fail
== raise
En d’autres termes, l’ fail
est juste un alias populaire pour la méthode d’augmentation d’erreur. Usage:
fail ArgumentError, "Don't argue with me!"
Rubocop parle de l’utilisation des deux mots;
“Utiliser
fail
au lieu d’raise
pour signaler des exceptions.”“Utilisez
raise
au lieu defail
pas renvoyer les exceptions.”
Voici un exemple.
def sample fail 'something wrong' unless success? rescue => e logger.error e raise end
http://www.ruby-doc.org est votre ami. Lorsque j’ai rubydoc fail
” Kernel ” a été le premier succès. Mon conseil est, en cas de doute, d’aller à la source définitive pour ce genre de choses.