Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk membuang semula pengecualian dalam pengendalian pengecualian fungsi C++?

Bagaimana untuk membuang semula pengecualian dalam pengendalian pengecualian fungsi C++?

WBOY
WBOYasal
2024-04-15 13:18:011029semak imbas

Balingan semula pengecualian dalam C++ digunakan untuk melontar semula pengecualian selepas menangkapnya supaya bahagian lain program boleh mengendalikannya. Sintaksnya ialah: cuba { ... } tangkap (const std::exception& e) { // Mengendalikan pengecualian // ... // Lempar semula lontaran pengecualian }. Pengecualian yang ditangkap boleh dibaling semula dalam blok tangkapan dengan menggunakan kata kunci lontaran. Pengecualian ini akan menamatkan fungsi dan membiarkan fungsi unggul mengendalikan pengecualian tersebut.

C++ 函数异常处理中如何重抛异常?

Pelontaran semula pengecualian dalam pengendalian pengecualian fungsi C++

Dalam C++, mekanisme pengendalian pengecualian membolehkan program ditamatkan atau disambung semula dengan anggun apabila pengecualian ditemui. Dengan menggunakan pernyataan try-catch, kami boleh menangkap pengecualian dan melaksanakan pengendalian ralat tertentu. try-catch 语句,我们可以捕获异常并执行特定的错误处理。

有时,我们可能希望在捕获异常后将异常重新抛出,以便程序的其他部分可以处理该异常。这可以通过使用 throw 关键字实现。

如何重抛异常

重抛异常的语法如下:

try {
  // 可能会抛出异常的代码
}
catch (const std::exception& e) {
  // 处理异常
  // ...
  // 重抛异常
  throw;
}

catch 块中,使用 throw 关键字可以将捕获的异常重新抛出。这将终止当前函数并让上级函数处理该异常。

实战案例

考虑以下代码段:

#include <iostream>

void fun1() {
  try {
    fun2();
  }
  catch (const std::logic_error& e) {
    std::cout << "Caught logic error in fun1: " << e.what() << std::endl;
    // 重抛异常以允许调用者处理
    throw;
  }
}

void fun2() {
  throw std::logic_error("Logic error in fun2");
}

int main() {
  try {
    fun1();
  }
  catch (const std::logic_error& e) {
    std::cout << "Caught logic error in main: " << e.what() << std::endl;
  }
  return 0;
}

执行输出:

Caught logic error in fun1: Logic error in fun2
Caught logic error in main: Logic error in fun2

在该示例中,fun2() 抛出一个 std::logic_error 异常。fun1() 捕获该异常并重抛它。main()

Kadangkala, kita mungkin mahu melontar semula pengecualian selepas menangkapnya supaya bahagian lain program boleh mengendalikan pengecualian tersebut. Ini boleh dicapai dengan menggunakan kata kunci lempar. 🎜🎜🎜Cara untuk melontar semula pengecualian🎜🎜🎜Sintaks untuk melontar semula pengecualian adalah seperti berikut: 🎜rrreee🎜Dalam blok catch, gunakan kata kunci throw untuk melontar semula pengecualian ditangkap keluar. Ini akan menamatkan fungsi semasa dan membiarkan fungsi unggul mengendalikan pengecualian. Kes praktikal kod>Pengecualian. fun1() menangkap pengecualian dan melemparkannya semula. Fungsi main() kemudian menangkap dan mengendalikan pengecualian yang dilemparkan semula. 🎜

Atas ialah kandungan terperinci Bagaimana untuk membuang semula pengecualian 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