Nella scrittura del codice C++ Win32, apprezzerei alcuni suggerimenti su come gestire gli errori delle API Win32.Suggerimenti sulla gestione degli errori del codice Win32 C++: AtlThrow contro le eccezioni STL
In particolare, in caso di guasto di una chiamata di funzione Win32 (es MapViewOfFile), è meglio:
definire un Win32Exception classe derivata da std :: eccezione, con un membro dati HRESULT aggiunto per memorizzare l'HRESULT corrispondente al valore restituito da GetLastError?
In quest'ultimo caso, potrebbe utilizzare il metodo cosa() per restituire una stringa di errore dettagliato (ad esempio "chiamata MapViewOfFile fallito nel MyClass :: metodo DoSomething().").
Quali sono i pro e i contro di 1 vs 2?
C'è qualche altra opzione migliore che mi manca?
Come nota a margine, se mi piacerebbe localizzare il componente che sto sviluppando, come posso localizzare l'eccezione stringa what()? Stavo pensando di costruire una tabella per mappare la stringa inglese originale restituita da what() in una stringa di errore localizzata Unicode. Qualcuno potrebbe suggerire un approccio migliore?
Grazie mille per i vostri approfondimenti e suggerimenti.