2012-03-25 1 views
0

Ma question concerne le traitement des exceptions.Quelle est l'heure correcte pour gérer les exceptions pour les méthodes?

Si j'ai par exemple trois méthodes comme celle-ci:

Private void Method1() 
{ 
    //My code ... 
} 

Private void Method2() 
{ 
    //My code ... 
} 

Private void Method3() 
{ 
    //My code ... 
} 

Et j'appelle les trois méthodes en cas de chargement de la page comme ceci:

void Page_Load() 
{ 
    if(!Page.IsPostBack) 
    { 

     Method1(); 
     Method2(); 
     Method3(); 
    } 
} 

Quelle est la meilleure pratique ici pour la gestion des exceptions. [Try and Catch] l'exception pour chaque méthode, je veux dire dans la méthode implementation.or envelopper juste l'appel des trois méthodes avec une [Try-Catch] unique chargement de la page ...

+0

Cela dépend de ce que vous voulez faire dans le gestionnaire d'exception. Si vous souhaitez informer l'utilisateur de ce qui s'est passé, vous devez disposer de gestionnaires d'exceptions distincts pour chacun d'entre eux. Si vous voulez juste une généralisation "Quelque chose s'est mal passé et je ne vais pas vous dire de quoi il s'agit", on en a assez. –

+0

Vous devriez attraper et enregistrer les exceptions dès que possible. Ce que vous faites dépend alors du contexte. Vous pouvez appeler 'Method2' même si' Method1' a déclenché une exception. Vous pouvez fournir une page d'erreur personnalisée et capturer toutes les exceptions réussies dans [Application_Error] (http://msdn.microsoft.com/en-us/library/aa479319.aspx#customerrors_topic6). –

Répondre

3

Vous ne devez try{}catch{} si vous savez comment récupérer d'une exception.

Dans tous les cas, ayant un sommet mondial/gestionnaire try{}catch{}/d'erreur afin d'enregistrer les erreurs est une bonne pratique.

En général, si vous ne savez pas comment gérer une exception, ne l'attrape pas. Ne pas avaler de telles exceptions non plus - essayez de fermer l'application/thread aussi gracieusement que possible.

-1

À mon avis, vous devriez mettre essayer prises dans toutes les méthodes . Comme ça, vous serez en mesure de suivre les erreurs plus facilement.

Mais pour autant que je sache, il est préférable d'utiliser essayer prise que lorsque le traitement des sources externes. (c'est-à-dire, IO de fichier, communication de base de données, etc.) Ceci parce que try catch apporte un peu de surcharge.

(lors du vote vers le bas, s'il vous plaît me dire pourquoi cela me aide, mais aussi la personne qui a posé la question..)

Edit: Voir mon dernier commentaire. Comme d'autres l'ont souligné, mettre un bloc try/catch partout n'a aucun sens!

+0

Oui, essayez seulement d'attraper les choses que vous ne pouvez pas attraper avec du code. Par exemple, si vous avez peur d'obtenir une division par zéro, vérifiez d'abord les valeurs des opérandes et ne bloquez pas un bloc d'essai autour de lui. –

+1

Essayez attraper partout? Qu'en est-il quand il y a un 'OutOfMemoryExcpetion'? Attrapez ça aussi? – Oded

+0

Il peut être avantageux de 'try' /' catch' dans la plupart des méthodes. À mesure que l'application devient de plus en plus complexe, il devient de plus en plus difficile de contrôler le bouillonnement des exceptions. Donc, à cet égard, le poste @ Rhapsody n'est pas garanti par un vote négatif (+1). Qu'est-ce qui est censé être illustré par l'exemple de 'OutOfMemoryException'? [Cette réponse dit tout en ce qui concerne les exceptions MOO.] (Http://stackoverflow.com/a/2117175/626442) – MoonKnight

1

Jetez un oeil à ma réponse here. C'est un sujet plutôt vaste, mais j'ai résumé quelques points à considérer. Ce n'est pas du tout la réponse finale pour cela, mais j'ai résumé 5 points qui pourraient vous aider dans votre décision.

Questions connexes