C 異常處理中,自訂異常和錯誤碼可提供更詳細的錯誤訊息。可定義派生自 std::exception 的例外類,包含描述性成員變數和函數,並使用 std::make_error_code() 函數拋出包含錯誤碼的例外。在捕獲異常後,可以從 e.what() 存取錯誤訊息,從 e.code() 存取錯誤碼,以便進行更有效的錯誤處理和診斷。
在C 中,異常處理是一個強大的機制,它允許我們優雅地處理錯誤情況,從而提高程式碼的可讀性和可維護性。而定義和拋出自定義異常,連同錯誤碼,可以提供更具體和有用的錯誤訊息,從而幫助我們快速診斷和解決問題。
為了定義自訂異常,我們需要建立派生自 std::exception
的異常類別。類別應包含描述錯誤的成員變數和函數。
例如,我們可以定義一個名為MyException
的例外類別:
#include <stdexcept> #include <string> class MyException : public std::exception { private: std::string message_; public: MyException(const std::string& message) : message_(message) {} const char* what() const noexcept override { return message_.c_str(); } };
在拋出例外時,我們還可以包含一個錯誤碼,以提供有關錯誤的附加資訊。我們可以使用 std::make_error_code()
函數來建立錯誤碼。
以下是向MyException
例外中新增錯誤碼的範例:
#include <system_error> throw MyException(std::make_error_code(std::errc::invalid_argument).message());
考慮以下程式碼範例:
try { // 可能会引发错误的代码 ... } catch (const MyException& e) { // 处理错误,并从 e.what() 访问错误消息 std::cerr << "Error: " << e.what() << std::endl; // 还可以从 e.code() 访问错误码 std::cerr << "Error code: " << e.code().value() << std::endl; }
std::errc::invalid_argument
。相反,定義自己的錯誤碼以提供更具體的錯誤訊息。 以上是C++ 技術中的例外處理:如何為自訂例外情況定義和拋出錯誤碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!