93 votes

Que fait le mot-clé fail en Ruby ?

J'apprends Ruby et j'ai rencontré le fail mot-clé. Qu'est-ce que cela signifie ?

if password.length < 8
   fail "Password too short"
end
unless  username
   fail "No user name set"
end

145voto

crazybob Points 678

En Ruby, fail est synonyme de raise . Le site fail Le mot-clé est une méthode de la Kernel qui est inclus par la classe Object . Le site fail soulève une erreur d'exécution, tout comme la méthode raise mot-clé.

En fail a trois surcharges :

  • fail : soulève un RuntimeError sans message d'erreur.

  • fail(string) : soulève un RuntimeError avec l'argument chaîne comme message d'erreur :

    fail "Failed to open file"
  • fail(exception [, string [, array]]) : soulève une exception de classe exception (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 doit échouer si elle reçoit un mauvais argument. Il est préférable d'élever un ArgumentError et non un RuntimeError :

    fail ArgumentError, "Illegal String"

    Un autre exemple : Vous pouvez passer l'ensemble backtrace au fail afin de pouvoir accéder à la trace à l'intérieur de la méthode rescue bloc :

    fail ArgumentError, "Illegal String", caller

    caller est une méthode du noyau qui renvoie le backtrace sous la forme d'un tableau de chaînes de caractères sous la forme de file:line: in 'method' .

Sans argument, lève l'exception dans $ ! ou lève une RuntimeError si $ ! est nul. Avec un seul argument de type String, lève une RuntimeError avec la chaîne de caractères comme message. Sinon, le premier paramètre doit être le nom d'une classe d'exception (ou d'un objet qui renvoie un objet Exception lorsqu'il reçoit un message d'exception). Le deuxième paramètre facultatif définit le message associé à l'exception. est un tableau d'informations de rappel. Les exceptions sont capturées par la clause de sauvetage des blocs begin...end.

Source : Documentation Ruby sur le module Kernel .

33voto

kuboon Points 1033

Rubocop dit à propos de l'usage des deux mots ;

Utilisez fail au lieu de raise pour signaler les exceptions.

Utilisez raise au lieu de fail pour renverser les exceptions.

Voici un exemple.

def sample
  fail 'something wrong' unless success?
rescue => e
  logger.error e
  raise
end

26voto

Boris Stitnicky Points 5409

fail == raise

En d'autres termes, fail est juste un alias populaire pour raise méthode de levée des erreurs. Utilisation :

fail ArgumentError, "Don't argue with me!"

7voto

pjs Points 5208

www.ruby-doc.org est votre ami. Quand j'ai cherché sur Google rubydoc fail " Noyau "a été le premier coup. Mon conseil est le suivant : en cas de doute, consultez la source définitive pour les définitions de ce genre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X