C++で例外をスローする方法と例


  1. 例外のスロー: C++で例外をスローするには、throwキーワードを使用します。例外をスローすると、プログラムの実行は現在の関数から抜け出し、例外をキャッチするまでのスタックフレームが解除されます。

    void divide(int a, int b) {
       if (b == 0) {
           throw "Divide by zero exception";
       }
       int result = a / b;
       // 他の処理
    }
    int main() {
       try {
           divide(10, 0);
       }
       catch (const char* msg) {
           std::cout << "例外がスローされました: " << msg << std::endl;
       }
       return 0;
    }

    上記の例では、divide関数内でゼロでの除算が発生した場合に例外がスローされます。main関数では、tryブロック内でdivide関数を呼び出し、catchブロックで例外をキャッチしてメッセージを表示しています。

  2. 例外クラスの使用: C++では、例外を表すためにカスタムの例外クラスを定義することもできます。これにより、より詳細な情報やカスタムのエラーメッセージを例外に含めることができます。

    class MyException : public std::exception {
    public:
       const char* what() const noexcept {
           return "My custom exception";
       }
    };
    void doSomething() {
       throw MyException();
    }
    int main() {
       try {
           doSomething();
       }
       catch (const std::exception& e) {
           std::cout << "例外がスローされました: " << e.what() << std::endl;
       }
       return 0;
    }

    上記の例では、MyExceptionというカスタムの例外クラスを定義し、doSomething関数内で例外をスローしています。main関数では、std::exceptionクラスをキャッチして例外の詳細な情報を表示しています。

例外処理に関する詳細な情報や他の例もありますが、上記の例は基本的な例外のスローとキャッチの方法を示しています。プログラムの特定の状況に応じて、適切な例外処理戦略を選択してください。