異常處理處理運行時錯誤,包括拋出、捕獲和處理異常。異常說明符用於指定函數可以拋出的異常類型,包括 noexcept(expr)(指定不拋出異常)和 throw()(指定可以拋出任何類型異常)。在實戰案例中,print_file 函數使用 throw() 說明符,並使用 try-catch 區塊在 main 函數中捕獲 std::runtime_error 異常,並處理檔案開啟錯誤。
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) { // 处理所有其他异常 }
異常說明符
異常說明符新增至函數簽章中,以指定函數可以拋出的例外類型。有兩種例外說明符:
expr
為常數表達式。 實戰案例
考慮一個讀取檔案並將其列印到控制台的函數。該函數可能會由於檔案不存在或存取被拒絕而引發異常。我們可以使用異常說明符和 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中文網其他相關文章!