如何解釋GetLastError() 傳回的錯誤代碼
呼叫Windows API 後,開發人員可能會遇到錯誤狀況,需要了解底層的情況失敗的原因至關重要。本機 Win32 API 函數 GetLastError() 提供錯誤代碼,但此代碼表示為整數,因此很難破解其含義。
將錯誤代碼轉換為文字訊息
為了獲得人類可讀的錯誤訊息,開發人員需要一種機制將這些數字錯誤代碼轉換為文字描述。下面的程式碼片段展示了此轉換過程:
#include <windows.h> #include <string> std::string GetLastErrorAsString() { // Retrieve the error message ID, if available. DWORD errorMessageID = ::GetLastError(); if (errorMessageID == 0) { return std::string(); // No error message has been recorded. } LPSTR messageBuffer = nullptr; // Instruct Win32 to generate the message string for the provided error ID. size_t size = FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, errorMessageID, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&messageBuffer, 0, NULL); // Transfer the error message into a std::string. std::string message(messageBuffer, size); // Deallocate Win32's message buffer. LocalFree(messageBuffer); return message; }
用法:
要使用此函數,只需在任何可能傳回錯誤程式碼。它將傳回一個包含文字錯誤訊息的 std::string,然後可以將其顯示給使用者或記錄以進行進一步的診斷。
以上是如何將 Windows GetLastError() 錯誤代碼轉換為人類可讀的訊息?的詳細內容。更多資訊請關注PHP中文網其他相關文章!