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

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

本文简介:选择自 taodm 的 blog

l         那些本来在用户的异常处理函数中的switch语句,现在移到了my_translator()中。不再是将所有seh异常映射为单个值(如version 1中)或单个类型的对象(version 2),现在的my_translator()将它们映射为多个类型的对象(取决于运行时的实际环境)。

l         structured_exception成为了一个基类。我没有让它成为纯虚类,这是跟从了c++标准运行库的引导(std::exception是个实体类)。

l         我没有定义任何析构函数,因为编译器隐含提供的的析构函数对这些简单类足够了。如果我定义了析构函数,它们将需要定义为virtual

l         what()现在返回了一个用户友好的文本,取代了原来的seh异常码。

l         因为我不再测试和显示这些代码,我去掉了数据成员code_。这使得structured_exception对象的大小减小了。(别太高兴:节省的空间又被新增的vptr指针抵销了,因为有了虚函数。)

l         因为模板方式更好,你应该放弃这种继承模式的。我将它留给你作为习题。

    试一下新的方案,将main文件改为:

#include <iostream>

using namespace std;

 

#include "structured_exception.h"

 

int main()

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

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

go top