Exceptions avec MVC
Introduction
Les composants MVC de Zend Framework utilisent un contrôleur frontal, ce qui veut
dire que toute requête envoyée à l'application entre par ce point unique. Ainsi, toutes
les exceptions sont encapsulées dans le contrôleur frontal, ceci vous permet de toutes
les traiter dans un seul endroit.
Cependant, les exceptions peuvent contenir des messages ou des traces plutôt
sensibles pour le système, comme des requêtes SQL, l'emplacement de certains fichiers
... Pour vous aider à protéger votre site, par défaut,
Zend_Controller_Front attrape toutes les exceptions et les
enregistre dans l'objet de réponse ; et bien entendu, par défaut, cet objet de réponse
n'affiche pas ces exceptions.
Gestion des exceptions
Plusieurs mécanismes vont vous permettre de traiter les exceptions dans le modèle
MVC de Zend Framework.
-
Par défaut, le plugin
error
handlerest présent, et activé. Ce plugin a été conçu pour gérer :
ErrorHandler agit dans le postDispatch(), et
analyse si une exception a été levée (en gérant son type). Si c'est le cas,
alors le plugin renvoie un jeton vers un contrôleur de gestion des
erreurs.
Ce contrôleur couvrira la majorité des cas d'utilisation. Il parvient à
gérer les cas "contrôleur absent", "action absente", ou "autre cas".
-
Zend_Controller_Front::throwExceptions()
En passant la valeur TRUE à cette méthode, vous indiquez au
contrôleur frontal que vous souhaitez qu'il vous retourne les exceptions qu'il
rencontre. Ainsi, il ne les ajoutera pas à la réponse, et il ne fera pas
intervenir le plugin "Error handler ". Exemple :
span style="color: #808080; font-style: italic;">// A vous de gérer ici
}
Cette méthode vous permet d'utiliser une gestion personnalisée des
exceptions dans votre application, de manière simple.
-
Zend_Controller_Response_Abstract::renderExceptions()
En passant un paramètre TRUE à cette méthode, vous indiquez
à la réponse d'afficher les exceptions qu'elle reçoit (du contrôleur frontal,
ou du plugin "Error handler ", par exemple), lorsque son rendu est
appelé. Ceci ne devrait être activé qu'en environnement de développement.
-
Zend_Controller_Front::returnResponse() et
Zend_Controller_Response_Abstract::isException().
En passant le booléen TRUE à
Zend_Controller_Front::returnResponse(),
Zend_Controller_Front::dispatch() ne commandera pas
l'affichage de la réponse automatiquement. Au lieu de cela, l'objet de réponse
sera retourné. Vous pouvez alors tester celui-ci pour voir s'il contient des
exceptions, ceci grâce à isException() et
getException(). Voyez :
span style="color: #808080; font-style: italic;">// Gestion des exceptions ici
Par rapport à
Zend_Controller_Front::throwExceptions(), cette
utilisation vous permet de ne rendre la réponse que lorsque vous le décidez,
selon la présence de telle ou telle exception, ou pas.
Différents types d'exceptions que vous pouvez rencontrer
Les composants MVC sont nombreux, - requête, routeur, distributeur, contrôleur,
et réponse - chaque objet risque de renvoyer une exception qui lui est propre.
Certaines peuvent être créées ou dérivées, d'autres par défaut indiquent un problème de
l'application.
Comme exemples :
|
|