0

我正在清理我的代码并通过异常切换到错误处理(因为这会在某些地方显着缩短代码)。

这意味着我需要设计自己的异常类层次结构。

现在它看起来像这样:

  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) {}
      };
    }
  }

问题是这看起来不是特别可读。在处理异常类的层次结构时是否有一些首选风格?

4

1 回答 1

2

当一个类名没有描述它将要扮演的角色时,这是一个明确的迹象,表明该类不应该存在。您有两个名为generic. 他们有什么意义?

实际上,您只介绍了一种异常类型,timeout. 我会简单地重写你给出的内容:

namespace error
{
  namespace network
  {
     class timeout : public std::exception 
     {
       public:
         timeout(const std::string& s);
         const char* what();
     }
  }
}
于 2013-03-28T13:22:28.183 回答