2009-03-01 3 views
0

Est-il acceptable ou raisonnable d'utiliser des exceptions pour gérer les erreurs générées par l'utilisateur? Tels que ...Situations d'utilisation d'exceptions, l'utilisateur doit-il pouvoir déclencher des exceptions?

try 
    { 
     $job->authorise($user); 
    } 
    catch (InsufficentCreditException $e) 
    { 
     return E_INSUFFICIENT_CREDIT; 
    } 
    catch (PermissionDeniedException $e) 
    { 
     return E_PERMISSION_DENIED; 
    } 

ou sont des exceptions réservées aux erreurs plus graves seulement (comme fichier introuvable, division par zéro)?

Répondre

6

Une mauvaise entrée de l'utilisateur n'est jamais une exception. C'est la norme!

Sérieusement cependant. Les exceptions sont pour des circonstances exceptionnelles, et les données incorrectes/incorrectes provenant d'une source externe ne sont généralement pas une exception.

0

Je pense que 'InsufficentCreditException' est une bonne raison de lancer si je comprends votre cas d'utilisation ci-dessus. Tout le flux positif du programme peut être fait pour être traité de haut en bas, toute «exception» au positif est un échec et donc une exception. Selon Mitch, "une mauvaise entrée de l'utilisateur n'est jamais une exception" et "les données incorrectes/incorrectes d'une source externe ne sont généralement pas une exception", mais si vous êtes sous "programme par contrat", c'est exactement le cas . Quelle meilleure raison y aurait-il de lancer une exception que des données invalides reçues d'une source extérieure?

Une note finale, votre question et votre cas d'utilisation ne correspondent pas. Le crédit insuffisant n'est généralement pas causé par une erreur générée par l'utilisateur. Un cas clair de cause à effet rendrait cela plus facile à répondre.

Questions connexes