Lors de la levée d'une exception?

J'ai exceptions créées pour chaque condition que ma demande ne se fait pas attendre. UserNameNotValidException, PasswordNotCorrectException etc.

Cependant, j'ai été dit que je ne devrait pas créer des exceptions à ces conditions. Dans mon UML ceux qui SONT des exceptions à l'écoulement principal, alors pourquoi ne devrait-elle pas être une exception?

Toute orientation ou de meilleures pratiques pour la création d'exceptions?

  • Veuillez rouvrir, c'est un très raisonnable et une question valable. Toute question implique une certaine quantité de l'opinion, mais dans ce cas, je soupçonne que c'est une question de "meilleures pratiques".
  • +1 pour les rouvrir. Comme de nombreux autres sujets intéressants "ça dépend" et il est très utile pour analyser les avantages et les inconvénients lors de la prise de décisions. Le fait que les gens confondent opinions sur des faits dans les réponses ne nie pas cela. Passant au crible de la boue est un exercice qui doit être laissée au lecteur.
  • Je suis également d'avis que cette question devrait être rouverte comme il est lié à de meilleures pratiques. Par la façon dont les pratiques exemplaires sont toujours des opinions qui peuvent aider les autres.
  • Microsoft a dit: "Ne retournez pas les codes d'erreur. Les Exceptions sont le principal moyen d'erreurs de déclaration dans les cadres." et "...Si un membre ne peut pas réussir à faire ce qu'il est conçu pour faire, cela devrait être considéré comme un échec de l'exécution et qu'une exception doit être levée.". msdn.microsoft.com/library/ms229030%28v=vs.100%29.aspx
  • Ces peut être totalement raisonnable exception, ça dépend des méthodes qui les lance. Une méthode appelée IsCredentialsValid(username,password) ne devrait pas lever une exception si le nom d'utilisateur ou mot de passe n'est pas valide, mais retourne la valeur false. Mais dire une méthode qui lit les données à partir de la base de données pourrait légitimement lancer une exception, si l'authentification échoue. En bref: Vous devez lever une exception si une méthode n'est pas capable de faire le travail qu'il est censé faire.
  • Généralement, les exceptions doivent être utilisés que si la fonction que l'avis de l'erreur ne peut pas récupérer à partir de ce.