2009-07-15 5 views
4

Je construis une petite application dans ASP.NET MVC. J'essaye toujours de trouver mon chemin autour de certains des problèmes de conception que je rencontre.Dans ASP.NET MVC, OnException doit-il être utilisé pour les exceptions d'application?

L'un d'entre eux est l'utilisation d'exceptions. J'ai construit mon modèle de sorte qu'il lance une exception chaque fois qu'un objet n'existe pas ou n'est pas accessible à l'utilisateur. Je pense que j'ai fait le bon choix, à mon avis.

Le problème est, quelle est la prochaine étape? Je peux soit vérifier l'exception dans le contrôleur, et rediriger vers une vue différente, mais cela semble produire beaucoup du même modèle dans de nombreuses actions dans de nombreux contrôleurs. Ou, je peux simplement éviter de vérifier l'exception et remplacer la méthode OnException du contrôleur (ou de la classe de contrôleur de base que j'utiliserai) pour le gérer. Cela garderait tout le fouillis de mes actions. A partir des exemples que j'ai trouvés, je peux voir comment HandleError et OnException peuvent être utilisés pour consigner des exceptions non gérées (ce qui est une bonne chose à faire) et rediriger vers un "désolé!" page, mais j'aimerais connaître votre opinion sur l'utilisation de ce mécanisme pour des exceptions moins "imprévues".

Répondre

3

Vous devriez extraire l'attribut HandleError. Vous pouvez spécifier quelle vue doit être affichée pour quelle exception. ASP.NET MVC HandleError C'est MVC-spécifique et me sens beaucoup plus «propre» que d'utiliser l'événement.

En plus de HandleError, j'utilise ELMAH pour capturer et enregistrer des exceptions.

Personnellement, j'essaie d'arriver à un point où toutes les exceptions générées sont capturées au niveau du contrôleur et ne pas barboter au-delà de cela. Cependant, [handleerror] fait exactement cela - récupère les erreurs et affiche une jolie page pertinente pour l'utilisateur.

Édition: Notez également que vous pouvez spécifier cela sur votre contrôleur, pas seulement sur l'action.

James

+0

True. Le problème que j'ai avec l'attribut HandleError est qu'il ne fonctionne pas en mode débogage, selon la documentation. Je n'ai pas du tout travaillé, en fait. –

+2

Assurez-vous d'avoir pour que MVC puisse gérer les erreurs. –

+0

En effet. Je n'ai pas complètement compris l'élément de configuration customErrors. Merci beaucoup! –

Questions connexes