2017-05-04 2 views
2

J'écris une application qui interagit avec Excel. Cependant, je suis en train de commettre une erreur que je ne peux pas détecter. Mon retraçage dit:Comment lire le tuple EXCEPINFO dans les messages d'erreur win32?

pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2147352565), None) 

Utilisation de la documentation com_error, je peux comprendre plus de cela. Cependant, je n'arrive pas à comprendre comment lire le tuple intérieur. Les docs se réfèrent à cela sous la forme d'un tuple exceptioninfo (facultatif), mais ils ne décrivent pas le contenu de celui-ci.

+0

Quelle est votre production attendue? Vous voulez accéder aux objets tuple? ou la signification des erreurs? –

+0

Je voudrais savoir la signification de l'erreur afin que je puisse réparer tout ce qui la cause. – indigochild

Répondre

1

De https://msdn.microsoft.com/en-us/library/windows/desktop/ms221133(v=vs.85).aspx

typedef struct tagEXCEPINFO { 
    WORD wCode; 
    WORD wReserved; 
    BSTR bstrSource; 
    BSTR bstrDescription; 
    BSTR bstrHelpFile; 
    DWORD dwHelpContext; 
    PVOID pvReserved; 
    HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO*); 
    SCODE scode; 
} EXCEPINFO, *LPEXCEPINFO; 

examen d'une sortie com_error qui a été généré par l'un de mes applications, je pense que les cartes de tuple EXCEPINFO à (wCode, bstrSource, bstrDescription, bstrHelpFile, dwHelpContext, scode)

Certes, je ne pas pris la peine d'aller la chasse dans les sources de pywin32 pour trouver où le tuple est construit.

+0

sources 'pywin32' pour' PyCom_PyObjectFromExcepInfo' [ici] (https://github.com/mhammond/pywin32/blob/cacb1ab5fbddaf1a275e741a76d987170c3504f5/com/win32com/src/ErrorUtils.cpp#L680-L686) confirmez que vous avez raison paulluap. Le tuple est en effet mappé avec '(wCode, bstrSource, bstrDescription, bstrHelpFile, dwHelpContext, scode)' – Day