MAPI �tendue des erreurs
S’applique à : Outlook 2013 | Outlook 2016
Les implémenteurs de méthodes d’interface peuvent choisir de simplement retourner la réussite (S_OK) et l’échec (MAPI_E_CALL_FAILED) ou de faire la distinction entre les conditions d’erreur, en retournant autant de valeurs d’erreur qu’il est judicieux pour la situation. La plupart des situations peuvent utiliser l’une des valeurs d’erreur définies par MAPI dans MAPICODE. Fichier d’en-tête H. Toutefois, pour les situations qui ne sont pas couvertes par une valeur prédéfinie, la valeur MAPI_E_EXTENDED_ERROR peut être utilisée. MAPI_E_EXTENDED_ERROR indique à l’appelant que des informations supplémentaires sur l’erreur sont disponibles. L’appelant récupère les informations supplémentaires en appelant la méthode GetLastError sur le même objet que celui qui a retourné MAPI_E_EXTENDED_ERROR.
GetLastError can be called to retrieve information about any error code, not only MAPI_E_EXTENDED_ERROR. Many MAPI objects implement interfaces that include the GetLastError method. GetLastError returns a single MAPIERROR structure that, in theory, includes a concatenation of all the errors generated by the previous method call. For more information, see MAPIERROR. As a caller, it is wise not to depend on having this extra error information available because object implementers are not required to provide it. However, it is strongly recommended that whenever implementers return MAPI_E_EXTENDED_ERROR, they make it possible for callers to retrieve a MAPIERROR structure with useful information about the error.
Because GetLastError is also an API function that is part of the Windows SDK, it can be easy to forget that in MAPI, GetLastError is an interface method and can only be called on MAPI objects. Another easy mistake to make is calling GetLastError on the wrong object. GetLastError must be called on the object that generated the error. For example, if your client makes a session call, and MAPI forwards the call to a service provider to do the work, your client should not call GetLastError on the service provider object. IMAPISession::GetLastError is the correct call; GetLastError should be invoked on the session object. For more information, see IMAPISession::GetLastError.