Kelas pengecualian yang ditakrifkan dalam C++: kelas baharu perlu diterbitkan daripada std::exception dan mengatasi fungsi maya untuk menyediakan mesej pengecualian seperti yang ditunjukkan dalam contoh, kelas MyException mengatasi perkara yang akan mengembalikan mesej pengecualian. Dalam kes sebenar, fungsi bahagi membuang pengecualian std::runtime_error, dan fungsi utama menangkap dan mencetak mesej pengecualian.
Dalam C++, kelas pengecualian digunakan untuk mengendalikan pengecualian fungsi. Untuk mentakrifkan kelas pengecualian, terbitkan kelas baharu daripada kelas std::exception
dan ganti fungsi maya what
untuk menyediakan mesej pengecualian. 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
MyException
terbit daripada kelas std::exception
dan mengatasi fungsi
untuk mengembalikan mesej pengecualian. Mesej boleh ditetapkan dalam pembina. 🎜🎜Kes praktikal🎜🎜Berikut ialah contoh fungsi menggunakan kelas pengecualian: 🎜rrreee🎜Dalam contoh di atas, fungsi divide
membuang std::runtime_errorException. Fungsi <code>utama
menggunakan blok try-catch
untuk menangkap pengecualian dan mencetak mesej pengecualian. 🎜Atas ialah kandungan terperinci Bagaimana untuk menentukan kelas pengecualian dalam pengendalian pengecualian fungsi C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!