C 異常封裝增強了程式碼的可讀性和可維護性,可將錯誤訊息與處理邏輯分開。透過定義繼承自 std::exception 的異常類,可封裝錯誤訊息。使用 throw 拋出異常,用 try-catch 捕捉異常。在實戰案例中,讀取檔案的函數使用異常類別封裝開啟檔案失敗的錯誤,呼叫函數時可捕捉異常並列印錯誤訊息。
C 函數異常處理中的異常封裝
在C 函數中,異常封裝可以提高程式碼的可讀性和可維護性。透過封裝異常,可以將錯誤訊息與處理邏輯分離,從而創建更清晰、更易於理解的程式碼。
異常類別的定義
首先,我們需要定義一個異常類別來封裝錯誤訊息。該類別應繼承自標準函式庫異常類別 std::exception
。例如:
class MyException : public std::exception { public: MyException(const std::string& message) : std::exception(message) {} };
這個異常類別定義了一個建構函數,它接受一個字串參數並將其作為異常訊息。
函數中的例外值拋出
在函數中拋出一個例外很簡單。可以使用throw
關鍵字後面跟著異常物件:
void myFunction() { if (someCondition) { throw MyException("发生了一些错误!"); } }
函數中的異常捕捉
要捕捉異常,可以使用try
和catch
區塊:
int main() { try { myFunction(); } catch (MyException& e) { std::cout << "错误:" << e.what() << std::endl; } }
實戰案例
考慮一個讀取檔案並計算檔案總行數的函數:
int countLines(const std::string& filepath) { std::ifstream ifs(filepath); if (!ifs.is_open()) { throw MyException("无法打开文件!"); } int count = 0; std::string line; while (std::getline(ifs, line)) { ++count; } return count; }
在這個函數中,我們使用MyException
類別封裝了檔案開啟失敗的錯誤訊息。在呼叫這個函數時,我們可以捕捉異常並列印錯誤訊息:
int main() { try { int lineCount = countLines("inputFile.txt"); std::cout << "文件共 " << lineCount << " 行" << std::endl; } catch (MyException& e) { std::cout << "错误:" << e.what() << std::endl; } }
以上是C++ 函式異常處理中如何封裝異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!