C++ 例外處理允許建立自訂錯誤處理例程,透過拋出例外並使用 try-catch 區塊捕捉例外來處理執行階段錯誤。 1. 建立一個派生自 exception 類別的自訂例外類別並覆寫 what() 方法;2. 使用 throw 關鍵字拋出例外;3. 使用 try-catch 區塊捕捉異常並指定可以處理的例外類型。
C++ 例外處理:支援自訂錯誤處理例程
在C++ 中,例外處理是一種處理執行時錯誤的強大機制。它允許您創建自訂錯誤處理例程,以優雅且高效的方式處理錯誤情況。
異常類別
在 C++ 中,異常由 exception
類別或其衍生類別表示。要拋出一個自訂異常,請建立您自己的衍生類別並覆寫 what()
方法。此方法傳回一個描述錯誤的字串。
class MyCustomException : public std::exception { public: const char* what() const noexcept override { return "This is my custom exception."; } };
拋出例外
#使用 throw
關鍵字拋出例外。它接受一個異常物件作為參數:
throw MyCustomException();
捕捉異常
#使用 try-catch
區塊捕捉異常。每個 catch
子句都指定一個可以處理的例外類型。如果發生符合類型的異常,將執行該子句中的程式碼:
try { // 可能抛出异常的代码 } catch (MyCustomException& e) { // 处理 MyCustomException 异常 } catch (std::exception& e) { // 处理所有其他类型的异常 }
實戰案例
讓我們考慮一個開啟檔案並對其進行讀取的函數。如果無法開啟文件,則函數應拋出我們的自訂例外:
#include <fstream> #include <iostream> using namespace std; // 自定义异常类 class FileOpenException : public std::exception { public: const char* what() const noexcept override { return "Could not open the file."; } }; // 打开文件并读取其内容的函数 string read_file(const string& filename) { ifstream file(filename); if (!file.is_open()) { throw FileOpenException(); } string contents; string line; while (getline(file, line)) { contents += line + '\n'; } file.close(); return contents; } int main() { try { string contents = read_file("file.txt"); cout << contents << endl; } catch (FileOpenException& e) { cout << "Error: " << e.what() << endl; } catch (std::exception& e) { cout << "An unexpected error occurred." << endl; } return 0; }
在上面的範例中,read_file()
函數拋出FileOpenException
異常,當文件無法開啟時啟動。在 main()
函數中,我們使用 try-catch
區塊來捕捉異常並相應地處理它們。
以上是C++ 異常處理如何支援自訂錯誤處理例程?的詳細內容。更多資訊請關注PHP中文網其他相關文章!