Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah peranan penyataan lempar dan buang semula dalam pengendalian pengecualian fungsi C++?

Apakah peranan penyataan lempar dan buang semula dalam pengendalian pengecualian fungsi C++?

WBOY
WBOYasal
2024-04-16 09:42:01646semak imbas

Pernyataan lontaran dalam pengendalian pengecualian digunakan untuk melontar pengecualian, dan pernyataan balingan semula digunakan untuk melontar pengecualian yang sama sekali lagi dalam pengecualian yang ditangkap. Sintaks pernyataan throw ialah: throw exception_object; sintaks pernyataan rethrow ialah: throw dan rethrow pernyataan hanya digunakan apabila ralat perlu dilaporkan kepada pemanggil, dan maklumat pengecualian mestilah jelas dan berguna.

C++ 函数异常处理中的 throw 和 rethrow 语句的作用是什么?

Baling dan baling semula pernyataan dalam pengendalian pengecualian fungsi C++

Pengecualian ialah ralat atau pengecualian yang berlaku semasa masa jalan dan boleh dilontar menggunakan pernyataan lontaran. Pernyataan rethrow digunakan untuk membuang pengecualian yang sama sekali lagi dalam pengecualian yang ditangkap.

kenyataan lontaran

kenyataan lontaran digunakan untuk melontar objek pengecualian. Sintaksnya adalah seperti berikut:

throw exception_object;

di mana exception_object ialah objek pengecualian, yang boleh menjadi contoh kelas pengecualian standard atau kelas pengecualian yang ditentukan pengguna. exception_object 是一个异常对象,可以是标准异常类或用户定义异常类的实例。

实战案例

让我们考虑一个函数 divide(),它计算两个数字的商。如果分母为零,则会抛出异常。

void divide(int a, int b) {
  if (b == 0) {
    throw runtime_error("除数不能为零");
  }
  cout << "商为 " << a / b << endl;
}

rethrow 语句

rethrow 语句用于在一个捕获的异常中再次抛出相同的异常。其语法如下:

rethrow;

实战案例

让我们扩展 divide() 函数,以捕获 runtime_error

Kes Praktikal

Mari kita pertimbangkan fungsi divide() yang mengira hasil bagi dua nombor. Jika penyebutnya adalah sifar, pengecualian dilemparkan.
    void divide(int a, int b) {
      try {
        if (b == 0) {
          throw runtime_error("除数不能为零");
        }
        cout << "商为 " << a / b << endl;
      }
      catch (runtime_error& e) {
        cerr << "错误: " << e.what() << endl;
        rethrow; // 重新抛出异常
      }
    }
  • rethrow statement
  • rethrow statement digunakan untuk melontarkan pengecualian yang sama sekali lagi dalam pengecualian yang ditangkap. Sintaksnya adalah seperti berikut:
  • rrreee
🎜Kes praktikal🎜🎜🎜Mari kita lanjutkan fungsi divide() untuk menangkap pengecualian runtime_error dan membuangnya semula menggunakan rethrow. 🎜rrreee🎜🎜Petua Penggunaan🎜🎜🎜🎜Gunakan lontaran hanya apabila anda perlu melaporkan ralat kepada pemanggil. 🎜🎜Rethrow biasanya digunakan untuk mengendalikan senario pengendalian pengecualian kompleks yang melibatkan berbilang pengendali pengecualian bersarang. 🎜🎜Jadikan maklumat pengecualian jelas dan berguna supaya pembangun dapat memahami dan menyelesaikan isu dengan mudah. 🎜🎜

Atas ialah kandungan terperinci Apakah peranan penyataan lempar dan buang semula dalam pengendalian pengecualian fungsi C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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