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

クラス名がその役割を説明していない場合、それはそのクラスが存在してはならないという確かな兆候です。という 2 つのクラスがありgenericます。それらのポイントは何ですか?

本当に、例外タイプを 1 つだけ導入しまし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 に答える