04-03-2010, 07:43 PM
L'avantage de l'exception, c'est que le langage gère sa propagation. Ton application remarque un comportement exceptionnel, tu lèves ton exception et tu peux la gérer au niveau que tu veux, pas forcément dans le fragment où l'erreur survient.
Exemple.
Admettons que j'ai un contrôleur UsersController, une action effectue un appel à une méthode de mon modèle User, qui elle-même fait un appel au modèle Planet (par exemple Planet.find(given_id)). Le comportement de find, quand on lui donne un entier, c'est de chercher la ligne qui a cet entier pour id et de jeter une exception ActiveRecord::RecordNotFound s'il ne trouve rien.
Ici, je peux gérer l'exception dans le modèle Planet, dans le modèle User, dans le contrôleur UsersController ou dans son parent ApplicationController (tous les contrôleurs en héritent).
J'ai donc un niveau de souplesse exceptionnel (sans jeu de mot) !
Sephi-Chan
Exemple.
Admettons que j'ai un contrôleur UsersController, une action effectue un appel à une méthode de mon modèle User, qui elle-même fait un appel au modèle Planet (par exemple Planet.find(given_id)). Le comportement de find, quand on lui donne un entier, c'est de chercher la ligne qui a cet entier pour id et de jeter une exception ActiveRecord::RecordNotFound s'il ne trouve rien.
Ici, je peux gérer l'exception dans le modèle Planet, dans le modèle User, dans le contrôleur UsersController ou dans son parent ApplicationController (tous les contrôleurs en héritent).
J'ai donc un niveau de souplesse exceptionnel (sans jeu de mot) !
Sephi-Chan