2017-05-04 30 views
2

我在写一个与Excel交互的应用程序。但是,我遇到了一个我无法追踪的错误。我回溯说:如何读取win32错误消息中的EXCEPINFO元组?

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

使用com_error文件,我可以找出这个最。但是,我无法弄清楚如何读取内部元组。文档将此称为(可选)excepinfo元组,但它们没有描述它的内容。

+0

您的预期产出是多少?你想访问元组对象?或错误的含义? –

+0

我想知道错误的含义,以便我可以解决导致错误的所有问题。 – indigochild

回答

1

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; 

检查,是由我的应用程序之一产生的com_error输出,我倒觉得EXCEPINFO元组映射到 (wCode, bstrSource, bstrDescription, bstrHelpFile, dwHelpContext, scode)

诚然,我也懒得去在pywin32源代码中寻找元组的构建位置。

+0

'PyCom_PyObjectFromExcepInfo' [here](https://github.com/mhammond/pywin32/blob/cacb1ab5fbddaf1a275e741a76d987170c3504f5/com/win32com/src/ErrorUtils.cpp#L680-L686)的'pywin32'源代码确认你是正确的paulluap。该元组确实映射到'(wCode,bstrSource,bstrDescription,bstrHelpFile,dwHelpContext,scode)' – Day