C++ Builder 参考手册 ➙ System ➙ TObject ➙ SafeCallException
头文件:#include <systobj.h>
命名空间:System
函数原型:
virtual HRESULT __fastcall SafeCallException(TObject *ExceptObject, void *ExceptAddr);
System::TObject::SafeCallException 是 System::TObject 的成员函数,是处理异常的函数。
参数:
ExceptObject:抛出的异常,从 Exception 继承过来的对象;
ExceptAddr:产生异常的地址;
返回值:
返回错误编码。如果不支持接口,返回 E_UNEXPECTED。
- TObject 的这个函数只是简单的返回 E_UNEXPECTED,从 TObject 继承的子类可以重载这个函数来处理异常。
以下通过分析源码得到的:
如果从 TObject 继承的子类是 COM 接口,可以调用 HandleSafeCallException 处理异常。
Windows 平台 <System.Win.ComObj.hpp>:
HRESULT __fastcall HandleSafeCallException(
System::TObject *ExceptObject,
void *ExceptAddr,
const GUID &ErrorIID,
const System::WideString ProgID,
const System::WideString HelpFileName);
其他平台 <System.SysUtils.hpp>:
HRESULT __fastcall HandleSafeCallException(
System::TObject *ExceptObject,
void *ExceptAddr,
const GUID &ErrorIID,
const System::UnicodeString ProgID,
const System::UnicodeString HelpFileName);
SafeCallException 和 HandleSafeCallException 的应用:
HRESULT __fastcall TMyClass::SafeCallException(TObject *ExceptObject, void *ExceptAddr)
{
return HandleSafeCallException(ExceptObject, ExceptAddr, iid, L"", L"");
}
参考:
- System::Classes::TComponent::SafeCallException
- System::TObject
- VCL 类继承关系
C++ Builder 参考手册 ➙ System ➙ TObject ➙ SafeCallException