Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menukar Kod Ralat Windows GetLastError() kepada Mesej Boleh Dibaca Manusia?

Bagaimanakah Saya Boleh Menukar Kod Ralat Windows GetLastError() kepada Mesej Boleh Dibaca Manusia?

Susan Sarandon
Lepaskan: 2024-11-19 20:38:03
asal
939 orang telah melayarinya

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

Cara Mentafsir Kod Ralat yang Dikembalikan oleh GetLastError()

Selepas menggunakan panggilan API Windows, pembangun mungkin menghadapi situasi ralat di mana memahami asas sebab kegagalan adalah penting. Fungsi Win32 API asli GetLastError() menyediakan kod ralat, tetapi kod ini diwakili sebagai integer, menjadikannya sukar untuk menghuraikan maksudnya.

Menukar Kod Ralat kepada Mesej Tekstual

Untuk mendapatkan mesej ralat yang boleh dibaca manusia, pembangun memerlukan mekanisme untuk menukar kod ralat berangka ini kepada penerangan teks. Coretan kod di bawah mempamerkan proses penukaran ini:

#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;
}
Salin selepas log masuk

Penggunaan:

Untuk menggunakan fungsi ini, cuma panggil GetLastErrorAsString() selepas sebarang panggilan API yang mungkin mengembalikan kod ralat. Ia akan mengembalikan std::rentetan yang mengandungi mesej ralat teks, yang kemudiannya boleh dipaparkan kepada pengguna atau dilog untuk diagnostik lanjut.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Kod Ralat Windows GetLastError() kepada Mesej Boleh Dibaca Manusia?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan