SEH和C++的标准错误处理机制

    技术2024-12-05  60

    通过看C++编程思想第二卷和Windows核心编程这两本书,懂得了VC++里的异常处理原来是两套机制,原来一直没有把这个问题搞清,白白用了5年C++,惭愧惭愧。

     

    一种是C++运行库的异常处理是ANSI的标准异常处理,采用的关键字是try,throw,catch

    一种是Windows平台的SEH异常处理机制(structured error handling),采用的关键字是__try,__except,__finally

    SEH具体又可以分为结束处理程序(termination handler)和异常处理程序(exception handler)。

    结束处理程序的执行模板为:

    __try

    __finally

    还有一个关键字__leave用于在__try模块中执行的代码直接跳转至__finally模块执行。

    异常处理程序的执行模板为

    __try

    __exception

     

     

    应该说C++的标准异常处理是建立在系统实现之上的,SEH比标准处理更底层。而C++标准异常处理则可以做到跨平台。所以说各有利弊。

    Windows核心编程的25.6中有详细的说明。 

     

    参考文章:http://www.cppblog.com/mzty/archive/2006/09/22/12824.html

     

    最新回复(0)