当前位置:主页   - 电脑 - 程序设计 - C/C++
异常处理与MiniDump详解(3) SEH(Structured Exception Handling)
来源:网络   作者:九天雁翎   更新时间:2011-10-15
收藏此页】    【字号    】    【打印】    【关闭

  一、   综述

  SEH--Structured Exception Handling,是Windows操作系统使用的异常处理方式。

  对于SEH,有点需要说明的是,SEH是属于操作系统的特性,不为特定语言设计,但是实际上,作为操作系统的特性,几乎就等同与面向C语言设计,这点很好理解,就像Win32 API,Linux下的系统调用,都是操作系统的特性吧,实际还是为C做的。但是,作为为C语言设计的东西,实际上可调用的方式又多了,汇编,C++对于调用C语言的接口都是比较方便的。

  二、   基础篇

  还是简单介绍一下SEH的使用,但是不准备太详细的介绍了,具体的详细介绍见参考中提及的书目。关于SEH的基本应用,《Windows核心编程》绝对是最佳读物(其实个人一直认为《Windows核心编程》是Windows编程领域必看的第二本书,第一本是《Programming Windows》。关于SEH更深入的一点的知识可能就要参考一些能用汇编讲解的书籍了,《Windows用户态程序高效排错》算是其中讲的不错的一本。

  首先,SEH也有像C++异常一样的语法,及类try-catch语法,在SEH中为__try-except语法,抛出异常从throw改为RaiseException,在MSDN中的语法描述为:

__try 
{
   // guarded code
}
__except ( expression )
{
   // exception handler code
}

  见一个实际使用的例子:

  例1:

#include <iostream>
#include <windows.h>
using namespace std;
 
int main()
{
    __try
    {
       RaiseException(0, 0, 0, NULL);
    }
    __except(EXCEPTION_EXECUTE_HANDLER)
    {
       cout <<"Exception Raised." <<endl;
 
    }
 
    cout <<"Continue running" <<endl;
}

编缉推荐阅读以下文章

  • 异常处理与MiniDump详解(2) 智能指针与C++异常
  • 异常处理与MiniDump详解(1) C++异常
其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明