描述:
先要实现ISupportErrorInfo,然后再你要抛出异常的地方SetErrorInfo
CComPtr<ICreateErrorInfo> pcei;
HRESULT hr=CreateErrorInfo(&pcei);
ATLASSERT(SUCCEEDED(hr));
hr=pcei->SetDescription(OLESTR("THIS IS A CUSTOM EXCEPTION."));
CComPtr<IErrorInfo> pei;
hr=pcei->QueryInterface(IID_IErrorInfo,(void**)&pei);
ATLASSERT(SUCCEEDED(hr));
hr=SetErrorInfo(0,pei);
ATLASSERT(SUCCEEDED(hr));
return E_FAIL;
在抛出异常后必须返回表示失败的HRESULT,不然VB不会捕捉异常
不要上面的方法,因为我用模板定义一个基类,模板函数里面有异常~~怎么处理??
解决方案1:
除了返回E_之类的东西,
比如return E_OUTOFMEMORY
return E_POINTER
这些系统定义的异常之外,你还可以自定义你的异常。
try catch你的异常
返回E_之类的东西,
比如return E_OUTOFMEMORY
return E_POINTER
继承ISupportErrorInfo接口
函数的返回值为HRESULT,在引发异常的地方调用
return Error(message);