Que fait le mot clé fail dans Ruby?

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 de fail 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.