Ok, hier, on a vu comment gérer les erreurs Ruby (comme appeler une méthode inexistante). Mais imaginons que l’on veuille définir nos propres règles ?

Raise an exception

Je vais créer une méthode où je vais afficher une erreur sous certaines conditions. Exemple :

def edf
if nouveau_joueur != francais
raise "Tu ne peux que sélectionner des français coco!"
end
end
→ ! RuntimeError ("Tu ne peux que sélectionner des français coco!")

Bien sûr, ce bloc de code ne marche pas en soi, mais c’est pour montrer que dans ma méthode “edf” (qui veut dire “Equipe De France”), si on ajoute un joueur non français, ça affiche une erreur. En effet, Ruby se contrefout de savoir si un joueur en edf est français ou pas. Par contre, pour nous, c’est très important.

La syntaxe ci-dessus est la plus pratique, mais on peut aussi l’écrire de deux manières différentes :

  • raise tout court affiche un RuntimeError sans message
  • raise NoMethodError, "Un problème coco!", caller : c’est la syntaxe la plus propre. En effet, on ajoute ici le type d’exception auquel s’applique le raise. Il y a aussi le message, et le caller, une sorte de variable où est stockée l’erreur si j’ai bien compris…

Le mieux dans mon exemple d’EDF serait de créer une exception appelée “PlayerCountryError”. Ce serait magique! On va voir si mes talents de prestidigitation seront encore valables demain…