Vide blocs catch

J'ai parfois dans des situations où j'ai besoin d'attraper une exception si jamais elle est levée, mais ne jamais rien faire avec elle. En d'autres termes, une exception peut se produire, mais il n'a pas d'importance si elle n'.

J'ai lu récemment cet article à propos d'une chose semblable: http://c2.com/cgi/wiki?EmptyCatchClause

Cette personne parle de comment le commentaire de

//should never occur 

est une odeur de code et ne doit jamais apparaître dans le code. Ils ont ensuite aller sur expliquer comment le commentaire

//don't care if it happens

est tout à fait différent et je lance dans des situations comme ça moi. Par exemple, lors de l'envoi d'e-mail-je faire quelque chose de similaire à ceci:

var addressCollection = new MailAddressCollection();
foreach (string address in addresses)
{
    try
    {
        addressCollection.Add(address);
    }
    catch (Exception)
    {
        //Do nothing - if an invalid email occurs continue and try to add the rest
    }
}

Maintenant, vous pouvez penser que cela est une mauvaise idée puisque vous voulez revenir à l'utilisateur et d'expliquer que l'un ou plusieurs des messages n'a pas pu être envoyé au destinataire. Mais si c'est juste un CC adresse? C'est moins important et vous pouvez toujours envoyer le message de toute façon, même si l'une de ces adresses n'était pas valide (peut-être juste une faute de frappe).

Donc suis-je en droit d'utiliser un vide bloc catch ou est-il une meilleure alternative que je ne suis pas au courant?

  • Comment savez-vous que Exception est liée à la CC de l'adresse, et pas par exemple à sortir de l'état de la mémoire? comment comptez-vous rétablir?
  • Dans votre exemple, je serais encore faire quelque chose, à l'exception bien, même juste journalisation elle - même ne pouvez pas donner à l'utilisateur le choix de savoir quoi faire avec l'échec des adresses e-mail, mais l'enregistrement de sorte que vous savez ce qui s'est passé, c'est bien aussi.
  • Je soupçonne l'intention de l'auteur était qu'un commentaire en disant: "Cette erreur ne devrait jamais se produire" implique que le codeur n'a pas pensé que faire si l'erreur défie les attentes et se produit de toute façon. Le deuxième commentaire est "mieux", mais une bien meilleure serait d'expliquer pourquoi vous n'avez pas de soins sur l'erreur. En fin de compte, la meilleure gestion des exceptions dépend de ce que votre demande est censé faire. Avaler une exception avec aucune autre action n'est acceptable dans certaines circonstances. Dans d'autres, vous devrez ouvrir une session en premier, et dans certains cas, vous avez réellement besoin pour tenter une récupération.
  • Merci pour les commentaires. Je suis d'accord avec vous que je devrais être à attraper les exceptions spécifiques en rapport de format d'adresse et de laisser les autres de la bulle vers le haut. Je vais faire ce changement
  • Même si nous supposons que nous ne se soucient pas parce que l'e-mail n'est pas valide, il est bon de journal de l'exception et de prendre note de la non valides e-mail. Vide exception est juste une excuse pour les paresseux de la programmation.
  • Je pense que tu veux dire "exemple de" au lieu de "excuse"

InformationsquelleAutor Serberuss | 2013-05-23