Al escribir el código Win32 C++, agradecería algunos consejos sobre cómo manejar los errores de las API Win32.Sugerencias sobre el manejo de errores del código Win32 C++: excepciones de AtlThrow vs. STL
En particular, en caso de un fallo de una llamada a la función Win32 (por ejemplo MapViewOfFile), es mejor a:
definir un clase Win32Exception derivado de std :: exception, con un miembro de datos HRESULT agregado para almacenar HRESULT correspondiente al valor devuelto por GetLastError?
En este último caso, podría usar el método de lo que() para devolver una cadena de error detallado (por ejemplo, "llamada MapViewOfFile falló en MyClass :: HacerAlgo() método.").
¿Cuáles son los pros y los contras de 1 vs. 2?
¿Hay alguna otra opción mejor que me falta?
Como nota al margen, si me gustaría localizar el componente que estoy desarrollando, ¿cómo podría localizar la cadena de excepción what()? Estaba pensando en construir una tabla mapeando la cadena original en inglés devuelta por what() en una cadena de error localizado de Unicode. ¿Alguien podría sugerir un mejor enfoque?
Muchas gracias por sus ideas y sugerencias.