Dalam pengendalian pengecualian C++, pengecualian tersuai dan kod ralat boleh memberikan maklumat ralat yang lebih terperinci. Anda boleh menentukan kelas pengecualian yang diperoleh daripada std::exception, termasuk pembolehubah dan fungsi ahli deskriptif, dan gunakan fungsi std::make_error_code() untuk membuang pengecualian yang mengandungi kod ralat. Selepas pengecualian ditangkap, mesej ralat boleh diakses daripada e.what() dan kod ralat daripada e.code() untuk pengendalian dan diagnosis ralat yang lebih cekap.
Dalam C++, pengendalian pengecualian ialah mekanisme berkuasa yang membolehkan kami mengendalikan situasi ralat dengan anggun, dengan itu meningkatkan kebolehbacaan dan kebolehbacaan kod. Mendefinisikan dan membuang pengecualian tersuai, bersama-sama dengan kod ralat, boleh memberikan maklumat ralat yang lebih khusus dan berguna, sekali gus membantu kami mendiagnosis dan menyelesaikan masalah dengan cepat.
Untuk menentukan pengecualian tersuai, kita perlu mencipta kelas pengecualian yang diperoleh daripada std::exception
. Kelas ini harus mengandungi pembolehubah ahli dan fungsi yang menerangkan ralat. std::exception
的异常类。该类应包含描述错误的成员变量和函数。
例如,我们可以定义一个名为 MyException
的异常类:
#include <stdexcept> #include <string> class MyException : public std::exception { private: std::string message_; public: MyException(const std::string& message) : message_(message) {} const char* what() const noexcept override { return message_.c_str(); } };
在抛出异常时,我们还可以包含一个错误码,以提供有关错误的附加信息。我们可以使用 std::make_error_code()
函数来创建错误码。
以下是向 MyException
异常添加错误码的示例:
#include <system_error> throw MyException(std::make_error_code(std::errc::invalid_argument).message());
考虑以下代码示例:
try { // 可能会引发错误的代码 ... } catch (const MyException& e) { // 处理错误,并从 e.what() 访问错误消息 std::cerr << "Error: " << e.what() << std::endl; // 还可以从 e.code() 访问错误码 std::cerr << "Error code: " << e.code().value() << std::endl; }
std::errc::invalid_argument
MyException
: std::make_error_code()
untuk membuat kod ralat. 🎜🎜Berikut ialah contoh menambahkan kod ralat pada pengecualian MyException
: 🎜rrreee🎜Contoh praktikal🎜🎜Pertimbangkan contoh kod berikut: 🎜rrreee🎜Nota🎜std::errc::invalid_argument
. Sebaliknya, tentukan kod ralat anda sendiri untuk memberikan maklumat ralat yang lebih khusus. 🎜🎜Jika boleh, sertakan maklumat kontekstual tentang ralat yang dilemparkan untuk membantu nyahpepijat. 🎜🎜Atas ialah kandungan terperinci Pengendalian pengecualian dalam teknologi C++: Bagaimana untuk menentukan dan membuang kod ralat untuk pengecualian tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!