開発中のCOMDLLがあり、いくつかの問題が発生しています。コードのブロックをキャッチしてみましたが、キャッチで_bstr_t
例外から取得しました。私がやりたかったのは、その例外をキャッチして文字列に出力することでしたが、その例外がスローされると、無効なnullポインターエラーがスローされます。ヌルポインタをチェックする方法についてMSDNを調べてみましたが、機能していないようです。これはクライアントマシン上にあり、情報を出力しようとするとこのエラーが発生するため、実際にはエラーをデバッグできません。
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;
}