首頁 > 後端開發 > C++ > 如何將 Windows GetLastError() 錯誤代碼轉換為人類可讀的訊息?

如何將 Windows GetLastError() 錯誤代碼轉換為人類可讀的訊息?

Susan Sarandon
發布: 2024-11-19 20:38:03
原創
945 人瀏覽過

How Can I Convert Windows GetLastError() Error Codes into Human-Readable Messages?

如何解釋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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板