首頁 > 後端開發 > C++ > C++ 函式異常處理中如何重拋異常?

C++ 函式異常處理中如何重拋異常?

WBOY
發布: 2024-04-15 13:18:01
原創
1028 人瀏覽過

C 中的異常重拋用於在捕獲異常後重新拋出,以便程式的其他部分可以處理它。語法是:try { ... } catch (const std::exception& e) { // 處理異常 // ... // 重拋異常 throw; }。透過使用 throw 關鍵字,可以在 catch 區塊中重拋捕獲的異常。此異常將終止函數,讓上級函數處理該異常。

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

C 函數例外處理中的例外重拋

在C 中,例外處理機制允許在遇到例外狀況時優雅地終止程序或恢復其中。透過使用 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() 函數隨後擷取並處理重拋的例外。

以上是C++ 函式異常處理中如何重拋異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板