SEH转化为C++异常
来源:互联网 发布:冒险岛2 账号数据异常 编辑:程序博客网 时间:2024/05/21 11:21
//==============================================================================//// 项目名 :数据库// 文件名 :XDBWin32Exception.h// 作 者 :
// 用 途 :Win32结构化异常封装类。// //==============================================================================// 版本记录//==============================================================================//// V0.1 2005-5-18 13:25:12//// //==============================================================================#ifndef __XDBWIN32EXCEPTION__H__INCLUDED__#define __XDBWIN32EXCEPTION__H__INCLUDED__//==============================================================================////////////////////////////////////////////////////////////////////// // 把Win32结构化异常转化为标准的C++异常来处理,这样可以避免SEH异常// 无法处理对象的析构函数的问题// /////////////////////////////////////////////////////////////////////// <summary> /// WIN32结构化异常封装类。/// </summary> class XDBWin32Exception{public:/// <summary> ///将结构化异常映射为C++异常。/// </summary> /// <remarks>/// 需要为每个线程(线程进入点函数)调用该函数。/// </remarks>static void MapWin32ExceptionToCPP(){_set_se_translator( XDBWin32Exception::TranslateWin32ExceptionToCPP );}/// <summary> /// 获得结构化异常信息。/// </summary> PEXCEPTION_POINTERS ExceptionPointers(){return m_pException;}/// <summary> /// 获得结构化异常代码。/// </summary> DWORD ExceptionCode(){if( NULL != m_pException &&NULL != m_pException->ExceptionRecord )return m_pException->ExceptionRecord->ExceptionCode;elsereturn 0;}/// <summary> /// 获得结构化异常地址。/// </summary> PVOID ExceptionAddress(){if( NULL != m_pException &&NULL != m_pException->ExceptionRecord )return m_pException->ExceptionRecord->ExceptionAddress;elsereturn NULL;}private:/// <summary> /// 构造函数。/// </summary> XDBWin32Exception( PEXCEPTION_POINTERS pException ){m_pException = pException;}/// <summary> ///将Win32结构化异常翻译为C++异常的转换函数。/// </summary> /// <param name="nExceptioCode">///结构化异常代码。/// </param>/// <param name="pException">///结构化异常信息。/// </param>static void TranslateWin32ExceptionToCPP( UINT nExceptioCode , PEXCEPTION_POINTERS pException ){throw XDBWin32Exception( pException );}/// 结构化异常信息PEXCEPTION_POINTERS m_pException;};//==============================================================================// 辅助宏//==============================================================================// 设置结构化异常映射为C++异常的转换函数#define MAP_SEH_TO_CPP_EXCEPTION()XDBWin32Exception::MapWin32ExceptionToCPP();//==============================================================================#endif // __XDBWIN32EXCEPTION__H__INCLUDED__//==============================================================================
- SEH转化为C++异常
- SEH转化为C++异常<二>
- SEH转化为C++异常<三>
- 如何把SEH类型的系统异常转化为C++类型的异常
- 把SEH类型的系统异常转化为C++类型的异常
- 如何把SEH类型的系统异常转化为C++类型的异常
- SEH不能捕获异常
- SEH不能捕获异常
- seh异常处理
- SEH异常处理
- SEH处理异常
- SEH结构化异常
- 采用Win32结构化异常(SEH)捕捉所有未捕捉的异常[C++]
- 视频格式转化为FLV (C#)
- 视频格式转化为FLV (C#)
- 视频格式转化为FLV (C#)
- 视频格式转化为FLV (C#)
- C char* 转化为struct
- Ubuntu下配置USB转串口及串口工具配置
- 浅淡EditPolicy和GEF的执行流程
- VS2010 MVC+EXTJS4 combo下拉框省、市、区三级联动例子
- 开启yuntable学习之路
- Networking and Sockets (1)
- SEH转化为C++异常
- 自定义ListView、GridView后,选中状态高亮
- 连线(Connection)是怎么添加进Connection Layer的呢
- 目标文件格式分析工具: ar,nm,objdump,objcopy,readelf
- 2011-11-17日450之现代教育技术课后感想
- ConstrainedLayoutEditPolicy与ContainerEditPolicy的区别
- css之图片定位
- Handle是怎么被添加时Handle Layer的?
- 自定义反馈,比如定制椭圆形图形的选择柄