Maison >développement back-end >C++ >Comment puis-je récupérer des messages d'erreur lisibles par l'homme à partir des appels d'API Windows ?
Lors de l'interaction avec l'API Windows, il est souvent nécessaire de récupérer le message d'erreur associé à un code d'erreur renvoyé par GetLastError(). Ce code d'erreur est une valeur entière et non un message texte lisible par l'homme.
Pour convertir le code d'erreur en une forme textuelle, qui peut être plus utile pour le débogage et le dépannage, l'extrait de code suivant peut être utilisé :
//Renvoie la dernière erreur Win32, au format chaîne. Renvoie une chaîne vide s'il n'y a pas d'erreur.<br>std::string GetLastErrorAsString()<br>{</p> <pre class="brush:php;toolbar:false">//Get the error message ID, if any. DWORD errorMessageID = ::GetLastError(); if(errorMessageID == 0) { return std::string(); //No error message has been recorded } LPSTR messageBuffer = nullptr; //Ask Win32 to give us the string version of that message ID. //The parameters we pass in, tell Win32 to create the buffer that holds the message for us (because we don't yet know how long the message string will be). 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); //Copy the error message into a std::string. std::string message(messageBuffer, size); //Free the Win32's string's buffer. LocalFree(messageBuffer); return message;
}
Cette fonction , GetLastErrorAsString(), tente de récupérer le message d'erreur associé au dernier code d'erreur enregistré par l'API Windows. Il récupère d'abord l'ID du message d'erreur et, s'il est valide, utilise la fonction FormatMessageA pour le convertir en une chaîne lisible par l'homme. Le message d'erreur est stocké dans un objet std::string et renvoyé par la fonction. Si aucun message d'erreur n'est trouvé, une chaîne vide est renvoyée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!