C で定義された Exception クラス: 新しいクラスは std::Exception から派生し、例外メッセージを提供する仮想関数をオーバーライドする必要があります。例に示すように、MyException クラスは例外メッセージを返す内容をオーバーライドします。実際の場合、divide 関数は std::runtime_error 例外をスローし、main 関数は例外メッセージをキャプチャして出力します。
#C 関数例外処理における例外クラス定義C では、関数例外を処理するために例外クラスが使用されます。例外クラスを定義するには、std::Exception クラスから新しいクラスを派生し、例外メッセージを提供するために
what 仮想関数をオーバーライドします。
#include <exception> class MyException : public std::exception { public: MyException(const char* message) : std::exception(message) {} MyException(const std::string& message) : std::exception(message.c_str()) {} const char* what() const noexcept override { return message_.c_str(); } private: std::string message_; };この例では、
MyException クラスは
std::Exception から派生します。クラスを変更し、例外メッセージを返すように
what 関数を書き換えました。メッセージはコンストラクターで設定できます。
#include <exception> #include <iostream> void divide(int numerator, int denominator) { if (denominator == 0) { throw std::runtime_error("Cannot divide by zero"); } std::cout << "Result: " << numerator / denominator << std::endl; } int main() { try { divide(10, 0); // 抛出异常 } catch (const std::exception& e) { // 捕获异常 std::cerr << "Error: " << e.what() << std::endl; } return 0; }上の例では、
divide 関数が動作します。除数がゼロの場合、
std::runtime_error 例外がスローされます。
main 関数は、
try-catch ブロックを使用して例外をキャッチし、例外メッセージを出力します。
以上がC++関数の例外処理で例外クラスを定義するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。