Bagaimana untuk menentukan kelas pengecualian dalam pengendalian pengecualian fungsi C++?

WBOY
Lepaskan: 2024-04-15 21:45:01
asal
1087 orang telah melayarinya

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.

C++ 函数异常处理中的异常类如何定义?

Takrifan kelas pengecualian dalam pengendalian pengecualian fungsi C++

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_;
};
Salin selepas log masuk

在这个示例中,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;
}
Salin selepas log masuk

在上述示例中,divide 函数在除数为零时抛出一个 std::runtime_error 异常。main 函数使用 try-catch

Berikut ialah contoh mentakrifkan kelas pengecualian: 🎜rrreee🎜Dalam contoh ini, kelas 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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan