首頁  >  文章  >  後端開發  >  C++ 函式的例外處理和例外說明符

C++ 函式的例外處理和例外說明符

WBOY
WBOY原創
2024-04-12 17:33:02661瀏覽

異常處理處理運行時錯誤,包括拋出、捕獲和處理異常。異常說明符用於指定函數可以拋出的異常類型,包括 noexcept(expr)(指定不拋出異常)和 throw()(指定可以拋出任何類型異常)。在實戰案例中,print_file 函數使用 throw() 說明符,並使用 try-catch 區塊在 main 函數中捕獲 std::runtime_error 異常,並處理檔案開啟錯誤。

C++ 函数的异常处理和异常说明符

C 函數的例外處理和例外說明符

異常處理是處理執行階段錯誤的關鍵機制,它分為三個部分:拋出異常、捕獲異常和處理異常。在 C 中,異常透過異常類別表示。

拋出異常

使用 throw 關鍵字拋出例外。異常類別或具有特定功能的任意物件都可以作為異常。例如:

throw std::runtime_error("失败!");

捕獲異常

使用 try-catch 區塊捕獲異常。 try 區塊包含可能拋出例外的程式碼,而 catch 區塊指定如何處理不同類型的例外。例如:

try {
  // 可能抛出异常的代码
} catch (const std::runtime_error& e) {
  // 处理 std::runtime_error 异常
} catch (const std::exception& e) {
  // 处理所有其他异常
}

異常說明符

異常說明符新增至函數簽章中,以指定函數可以拋出的例外類型。有兩種例外說明符:

  • noexcept(expr):指定函數不會拋出任何例外,其中 expr 為常數表達式。
  • throw():指定函數可以拋出任何類型的例外。

實戰案例

考慮一個讀取檔案並將其列印到控制台的函數。該函數可能會由於檔案不存在或存取被拒絕而引發異常。我們可以使用異常說明符和 try-catch 區塊來處理這些情況。

#include <iostream>
#include <fstream>

void print_file(const std::string& file_name) {
  std::ifstream file(file_name);
  if (!file.is_open()) throw std::runtime_error("无法打开文件!");

  std::string line;
  while (std::getline(file, line)) {
    std::cout << line << std::endl;
  }
}

int main() {
  try {
    print_file("test.txt");
  } catch (const std::runtime_error& e) {
    std::cerr << e.what() << std::endl;
  }

  return 0;
}

在函數 print_file 中,例外說明符 throw() 指定函數可以拋出任何類型的例外。在 main 函數中,我們使用 try-catch 區塊來處理異常。如果開啟檔案時發生錯誤,則會拋出 std::runtime_error 例外並在控制台列印錯誤訊息。

以上是C++ 函式的例外處理和例外說明符的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn