Supprimer un message
rfr
De mon expérience, les exceptions c'est le bien et le mal ... Trop de type d'exception tue l'exception
Bien sur, pour un programme donné, il faut toujours avoir une exception de base, les autres exceptions en derivent ce qui facilite les clauses try/catch.
Je soutiens que l'on peut très bien n'utiliser qu'une seule type d'exception. Par contre, ce qui me semble super utile c'est de pouvoir contenir une exception dans une autre, dans le cas ou l'exception en génère une nouvelle. On peut alors voir la stack des exceptions, ce qui facilite le debugging.
Autre chose, on peut aussi donner des codes aux erreurs qui est alors contenu dans l'exception. Ca permet par exemple de faciliter l'internationalisation et les messages par défaut.
Pour l'utilisation, ne jamais lancer une exception crée sur la heap (pas de new donc). En gros, on fait:
try {
throw MyHornyException("MODCOD501: You are so horny... (default message)");
} catch (MyHornyException & _ex) {
string code = _ex.getMessageCode();
}
My 2 cents ... mais c'est comme ça que je trouve les exceptions les plus facile à gérer sans surmultiplier le nombre de classe d'exception.
![:oh: :oh:](images/smileys/oh.gif)
Bien sur, pour un programme donné, il faut toujours avoir une exception de base, les autres exceptions en derivent ce qui facilite les clauses try/catch.
Je soutiens que l'on peut très bien n'utiliser qu'une seule type d'exception. Par contre, ce qui me semble super utile c'est de pouvoir contenir une exception dans une autre, dans le cas ou l'exception en génère une nouvelle. On peut alors voir la stack des exceptions, ce qui facilite le debugging.
Autre chose, on peut aussi donner des codes aux erreurs qui est alors contenu dans l'exception. Ca permet par exemple de faciliter l'internationalisation et les messages par défaut.
Pour l'utilisation, ne jamais lancer une exception crée sur la heap (pas de new donc). En gros, on fait:
try {
throw MyHornyException("MODCOD501: You are so horny... (default message)");
} catch (MyHornyException & _ex) {
string code = _ex.getMessageCode();
}
My 2 cents ... mais c'est comme ça que je trouve les exceptions les plus facile à gérer sans surmultiplier le nombre de classe d'exception.