1
我有一個COM DLL正在開發中,我遇到了一些問題。我試圖繞過一段代碼,在catch中,我得到了一個例外的_bstr_t
。我想要做的是捕獲該異常並將其打印到字符串,但是,當拋出異常時,它會向我拋出一個無效空指針錯誤。我試着看MSDN如何檢查一個空指針,但它似乎並沒有工作。我無法真正地調試錯誤,因爲這是在客戶端機器上,並且在嘗試輸出信息時出現此錯誤。使用_bstr_t時無效的空指針
catch(const _com_error& ex)
{
::OutputDebugStringW(ex.Description());
_variant_t ret;
std::string str = "#N/A ExcelException: ";
_bstr_t desc = ex.Description();
if(!desc || desc.GetBSTR() == L"")
{
str += ConvertBSTRToMBS(desc);
}
ret.SetString(str.c_str());
*Result = ret.Detach();
}
std::string ConvertBSTRToMBS(_bstr_t bstr)
{
std::string converted((char *)bstr);
return converted;
}
我看到我犯的錯誤,我想我一直在盯着這段代碼太久了。不過,如果(desc)或if(desc!= NULL),我不能這樣做,因爲這會產生一個錯誤。我需要找到一種方法來查看它是否不是NULL。 – Seb
@Seb:會如果(!! desc)工作? – Andrey
以前從未見過這種語法,但它確實工作正常。謝謝 – Seb