通过异常处理错误

时间:2013-03-28 13:02:38

标签: c++

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

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

现在它看起来像这样:

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

问题在于,这看起来并不特别易读。在处理异常类的层次结构时是否有一些首选样式?

1 个答案:

答案 0 :(得分:2)

当一个类名没有描述它将具有的角色时,这肯定表明该类不应该存在。您有两个名为generic的类。他们有什么意义?

实际上,您只引入了一种例外类型timeout。我会简单地改写你给出的内容:

namespace error
{
  namespace network
  {
     class timeout : public std::exception 
     {
       public:
         timeout(const std::string& s);
         const char* what();
     }
  }
}