Estrategias de control de errores
Dado que los métodos de interfaz son virtuales, no es posible que un autor de la llamada conozca el conjunto completo de valores que se pueden devolver desde cualquier llamada. Una implementación de un método puede devolver cinco valores; otro puede devolver ocho.
En la documentación se enumeran los valores comunes que se pueden devolver para cada método; estos son los valores que debe comprobar y controlar en el código porque tienen significados especiales. Es posible que se devuelvan otros valores, pero, dado que no son significativos, no es necesario escribir código especial para controlarlos. Una comprobación simple de cero o distinto de cero es adecuada.
Valores HRESULT
El valor devuelto de las funciones y métodos COM es un HRESULT. Los valores de algunos HRESUL Se han cambiado en COM para eliminar toda la duplicación y superposición con los códigos de error del sistema. Los que duplican los códigos de error del sistema se han cambiado a FACILITY_WIN32, y los que se superponen permanecen en FACILITY_NULL. Los valores comunes hrESULT y sus valores se muestran en la tabla siguiente.
HRESULT | Valor | Descripción |
---|---|---|
E_ABORT |
0x80004004 |
La operación se anuló debido a un error no especificado. |
E_ACCESSDENIED |
0x80070005 |
Error general de acceso denegado. |
E_FAIL |
0x80004005 |
Se ha producido un error no especificado. |
E_HANDLE |
0x80070006 |
Se usó un identificador no válido. |
E_INVALIDARG |
0x80070057 |
Uno o varios argumentos no son válidos. |
E_NOINTERFACE |
0x80004002 |
El método QueryInterface no reconoció la interfaz solicitada. No se admite la interfaz. |
E_NOTIMPL |
0x80004001 |
El método no se implementa. |
E_OUTOFMEMORY |
0x8007000E |
El método no pudo asignar la memoria necesaria. |
E_PENDING |
0x8000000A |
Los datos necesarios para completar la operación aún no están disponibles. |
E_POINTER |
0x80004003 |
Se usó un puntero no válido. |
E_UNEXPECTED |
0x8000FFFF |
Se ha producido un error catastrófico. |
S_FALSE |
0x00000001 |
El método se realizó correctamente y devolvió el valor booleano FALSE. |
S_OK |
0x00000000 |
El método se realizó correctamente. Si se espera un valor devuelto booleano, el valor devuelto es TRUE. |
Errores de red
Si los cuatro primeros dígitos del código de error son 8007, indica un error de red o sistema. Puede usar el comando net para descodificar estos tipos de errores. Para descodificar el error, convierta primero los últimos cuatro dígitos del código de error hexadecimal en decimal. A continuación, en el símbolo del sistema, escriba lo siguiente, donde se reemplaza el código decimal por el valor devuelto que desea descodificar:
net helpmsg <decimal_code>
El comando net devuelve una descripción del error. Por ejemplo, si COM devuelve el error 8007054B, convierta 054B a decimal (1355). A continuación, escriba lo siguiente:
net helpmsg 1355
El comando net devuelve la descripción del error: "El dominio especificado no existía".
Temas relacionados
-
control de errores de en COM