我正在清理我的代码并通过异常切换到错误处理(因为这会在某些地方显着缩短代码)。
这意味着我需要设计自己的异常类层次结构。
现在它看起来像这样:
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) {}
};
}
}
问题在于,这看起来并不特别易读。在处理异常类的层次结构时是否有一些首选样式?
答案 0 :(得分:2)
当一个类名没有描述它将具有的角色时,这肯定表明该类不应该存在。您有两个名为generic
的类。他们有什么意义?
实际上,您只引入了一种例外类型timeout
。我会简单地改写你给出的内容:
namespace error
{
namespace network
{
class timeout : public std::exception
{
public:
timeout(const std::string& s);
const char* what();
}
}
}