Je nettoie mon code et passe à la gestion des erreurs grâce à des exceptions (car cela raccourcira le code de manière significative à certains endroits).Traitement des erreurs par le biais d'exceptions
Cela signifie que j'ai besoin de concevoir ma propre hiérarchie de classes d'exception.
En ce moment, il ressemble à ceci:
namespace error
{
/** Generic error */
class generic : public std::except
{
public:
generic(const std::string& s) : std::except(s) {}
};
/** Namespace for network related errors */
namespace network
{
/** Generic network error */
class generic : public ::error::generic
{
public:
generic(const std::string& s) : ::error::generic(s) {}
};
/** Network timeout */
class timeout : public ::error::network::generic
{
public:
timeout(const std::string& s) : ::error::network::generic(s) {}
};
}
}
Le problème est que cela ne semble pas particulièrement lisible. Existe-t-il un style préféré pour gérer les hiérarchies de classes d'exceptions?
Cela me semble bien. Si j'étais vous, je supprimerais simplement ':: error' et' :: error :: network', car ils ne sont pas nécessaires dans ces cas (si je ne lis pas mal quelque chose) –
Je suis d'accord avec ce que @ Kiril Kirov a dit, mais je ne vois pas non plus beaucoup de raisons pour la classe "générique". –
Vous vouliez probablement dire 'std :: exception', pas' except', et cela a des fonctions purement virtuelles que vous devrez implémenter. Assurez-vous que votre objet d'exception respecte les garanties d'exception dont il a besoin (en particulier, la copie ne doit pas ** déclencher une exception.) Une erreur de type 'generic' et une exception de type 'generic' semble un peu ... –