J'imagine mal un cas où des exceptions métier seraient vraiment intéressantes. J'aurais donc tendance à dire qu'il faut éviter. On peut s'en sortir autrement, de façon plus élégante.

Envoyé par
StormimOn
On pourrait imaginer par exemple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| LoginManager login = new LoginManager();
if (!login.Login("toto", "motdepasse"))
{
switch(login.FailReason)
{
case FailReason.BadLogin:
// Traitement si échec car login inexistant.
break;
case FailReason.BadPassword:
// Traitement si échec car mot de passe incorrect.
break;
default:
throw new ArgumentException("On ne doit pas passer là. Exception pour le debug");
}
}; |
Personnellement, j'irais encore plus loin.
Plus quelque chose du style :
UserAccount connectedUser = loginManager.Login(...);
Avec un UserAccount spécial NotAUserAccount, héritant de UserAccount.

Envoyé par
Kalagan64
1 2 3 4
| catch(ExceptionMetier em)
{
afficherDansUnePopup(em.message);
} |
De la même façon, ici, c'est pas une bonne idée de lancer des exceptions dans la GUI ou la console, ou bref... peu importe : aussi près de l'utilisateur.
A ce niveau là, on est plus dans le contexte où on aurait pu gérer l'exception proprement.
Partager