C与C++中的异常处理17[1]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 taodm 的 blog

1.     c++异常和visual c++ seh的混合使用

    我在part2介绍了structured exception handling(简称seh)。在那时我就说过,sehwindow及其平台上的编译器专有的。它不是定义在iso c++标准中的,使用它的程序将不能跨编译器移植。因为我注重于标准兼容和可移植性,所以我对将windows专有的seh映射为iso标准c++exception handing(简称eh)很感兴趣。

    同时,我不是seh的专家。对它的了解绝大部分来自于本专栏前面的研究。当我考虑混合使用seheh时,我猜想解决方法应该是困难的和不是显而易见的。这是它花了我两个星期的原因:我预料到需要额外的时间来研究和试验。

    很高兴,我完全错了。我不知道的是visual c++运行期库直接支持了绝大部分我所想要的东西。不用创造新的方法了,我可以展示你visual c++已经支持了的东西,以及改造为所需要的东西的方法。基于这个目的,我将研究同一个例子的四个不同版本。

 

1.1     version 1:定义一个转换函数

    捆绑seheh的方法分两步:

l         一个用户自定义的转换函数来捕获seh的异常并将它映射为c++的异常。

l         一个visual c++运行期库函数来安装这个转换函数

    用户自定义的转换函数必要有如下形式:

void my_translator(unsigned code, exception_pointers *info);

本文关键:异常
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top