Menu
Coddy logo textTech

Qu'est-ce qu'une exception ?

Fait partie de la section Logique et Flux du Journey Ruby de Coddy — leçon 43 sur 56.

Lorsque quelque chose ne va pas au moment de l'exécution, comme diviser par zéro, analyser "abc" comme un entier ou appeler une méthode sur nil : Ruby lève une exception. Le programme s'arrête, et Ruby affiche ce qui s'est passé ainsi que l'endroit où cela s'est produit.

10 / 0
# ZeroDivisionError: divisé par 0

Chaque type d'échec est sa propre classe. En voici quelques-uns courants :

  • ZeroDivisionError : division d'un entier par zéro
  • ArgumentError : mauvais arguments passés à une méthode (Integer("abc"))
  • NoMethodError : appel d'une méthode que le receveur ne possède pas (nil.upcase)
  • TypeError : opération sur le mauvais type d'objet ("a" + 1)

Chaque classe d'exception possède un .message : la description lisible par l'homme que Ruby affiche lorsque l'exception n'est pas gérée. Les prochaines leçons montrent comment intercepter ces exceptions afin que votre programme continue de s'exécuter.

challenge icon

Défi

Débutant

Lisez une seule ligne d'entrée, un nom d'expression Ruby. Affichez le nom de la classe d'exception que Ruby lèverait pour celle-ci. Utilisez une instruction case (aucune levée d'exception réelle n'est nécessaire) :

  • divide-by-zeroZeroDivisionError
  • nil-methodNoMethodError
  • bad-integerArgumentError
  • wrong-typeTypeError
  • tout autre chose → Unknown

Pour l'entrée nil-method, la sortie est NoMethodError.

Aide-mémoire

Lorsque quelque chose se passe mal à l'exécution, Ruby lève une exception et le programme s'arrête. Classes d'exception courantes :

  • ZeroDivisionError : division d'un entier par zéro
  • ArgumentError : mauvais arguments (par ex. Integer("abc"))
  • NoMethodError : appel d'une méthode que le receveur ne possède pas (par ex. nil.upcase)
  • TypeError : opération sur le mauvais type d'objet (par ex. "a" + 1)
10 / 0
# ZeroDivisionError : division par 0

Chaque objet d'exception possède un .message avec une description lisible par l'homme.

Essayez vous-même

kind = gets.chomp

# À FAIRE : case kind ... afficher le nom de la classe d'exception correspondante
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et Flux