mardi 27 novembre 2007

Exemple de gestion d'erreurs en Ruby

Allez, un petit exemple de gestion d'erreurs en Ruby. Qu'est-ce que la gestion d'erreurs ? C'est un synonyme pour gestion d'exceptions (merci Wikipédia !!!). Cela permet de produire des codes plus sûrs car ceux-ci "sauront" intrinsèquement répondre à différents types d'erreurs (ou exceptions).


def diviser_1_par a
begin
puts "on commence"
unless ( a.is_a? Numeric ) then
raise "On divise par un nombre en general..."
end
puts "a priori, pas d'erreur cette fois."
c = 1.0 / a
rescue
puts "il y a une erreur, re-essayons !"
a = 2.0
retry
ensure
puts "Dans tous les cas, on affichera c : "
puts c.to_s
end
end


Le bloc à vérifier débute par le mot-clef begin. Raise permet de soulever une exception et d'y associer un message (ici, une erreur de type : a doit être un nombre). Comme une erreur est détectée, on passe dans rescue pour "sauver" l'exécution (ici, on attribue effectivement une valeur numérique à a). Le retry indique à l'interpréteur qu'il doit recommencer au niveau du begin (avec la nouvelle valeur de a). Enfin, le bloc ensure "assure"un passage obligé pour le code.

On peut tester cette méthode avec le petit code suivant (un cas où tout va bien, et un cas avec erreur) :

puts "1er cas : "
diviser_1_par 3.33
puts " "
puts "2eme cas : "
diviser_1_par "toto"

Ruby est assez riche dans sa partie gestion d'erreurs (classe Exception, possibilité de lier un rescue à un type d'erreur, comme SyntaxError par exemple...), il ne s'agit ici que d'un petit exemple pour commencer à réaliser des codes plus "sûrs".

0 commentaires: