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

来源:互联网 发布:手机变投影仪软件 编辑:程序博客网 时间:2024/05/09 12:45

通过看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