Les exceptions

Voir la vidéo
Description Sommaire

Les exceptions sont un élément important dans la programmation car elles permettent de gérer les problèmes qui pourraient avoir lieu pendant l'éxécution de notre script.

Capturer une exception

Lorsque l'on éxécute du code certaines erreurs peuvent arriver. Par exemple si vous essayez de diviser un chiffre par 0, ruby vous renverra une erreur ZeroDivisionError et arrètera l'éxécution du script. Dans certains cas nous allons chercher à capturer l'erreur pour effectuer une opération spécifique à la place (comme afficher un message d'erreur à l'utilisateur par exemple).
Dans ce cas là on entourera notre code d'une instruction begin.

begin  
  # -  
rescue ZeroDivisionError  
  # -  
rescue UnAutreTypeDException  
  # -  
rescue  Exception
  # Tous les autres types d'exceptions ici
end  

Il est possible d'utiliser plusieurs rescue afin de gérer plusieurs types d'erreurs. Il est aussi possible de récupérer l'erreur dans une variable.

begin  

rescue ZeroDivisionError  => e
    puts e.message
    puts e.backtrace.inspect
rescue UnAutreTypeDException  
  # -  
rescue  Exception
  # Tous les autres types d'exceptions ici
end  

Renvoyer une Exception

Quand on va écrire notre code on va parfois se trouver dans des situations générant des erreurs. Dans ce cas là il est important d'être en mesutre de renvoyer une exception, qui pourra ensuite être récupérée. Pour cela on utilise la méthode raise.

  def ajouterNote(note)
    raise "Impossible d'ajouter une note qui n'est pas un chiffre" if !note.respond_to? :to_i
    notes << note
  end

Il est aussi possible de renvoyer un type d'erreur particulier afin de pouvoir la capturer plus simplement dans le cadre d'un begin.


class AjoutNoteError < RuntimeError
    def initialize(msg = "Impossible d'ajouter la note pour la raison suivante : ...")
        super
    end
end

def ajouterNote(note)
    raise AjoutNoteError if !note.respond_to? :to_i
    notes << note
end
Publié
Technologies utilisées
Auteur :
Grafikart
Partager