0

私はあなたから助けを得たい大きな問題を抱えています。pRstEmployDBという_RecordsetPtr変数があります。私のコードには、レコードセットを開く行があります

pRstEmployDB->Open("SOCIETE", _variant_t((IDispatch *) theApp.pConEmployDB, true),  adOpenStatic, adLockReadOnly, adCmdTable);

問題は、この関数がクラッシュすると (アクセス違反)、エラーが発生したことを示すメッセージ ボックスが表示されてクラッシュすることです。プログラムがクラッシュして閉じられないようにするには、どうすればエラーをキャッチできますか?

ASSERT(... ==S_OK) を使用しようとしましたが、クラッシュします。

私もこの方法を試しましたが、希望はありません

Try
{
 pRstEmployDB->Open("SOCIETE", _variant_t((IDispatch *) theApp.pConEmployDB, true),   adOpenStatic, adLockReadOnly, adCmdTable);
}
catch (CException* e)
{
  return FALSE;
}

参考:オープン関数のコード(msdao15.tli)

inline HRESULT Recordset15::Open ( const _variant_t & Source, const _variant_t & ActiveConnection, enum CursorTypeEnum CursorType, enum LockTypeEnum LockType, long Options ) {
    HRESULT _hr = raw_Open(Source, ActiveConnection, CursorType, LockType, Options);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _hr;
}
4

0 に答える 0