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

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

本文简介:选择自 taodm 的 blog

      case exception_access_violation:

         // ...

      case exception_int_divide_by_zero:

         // ...

      case exception_stack_overflow:

         // ...

      // ...

   }

    这样的查询需要windows.h中的信息,以知道最初的seh异常码的含意。这样的需求违背了structured_exception的抽象原则。此外,switch语句也经常违背了多态的原则。从用户代码的角度看,你通常应该用继承和模板来实现它。

    c++标准运行库在这方面提供了一些指导。如我在part3中勾画的,头文件<stdexcept>定义了一个异常类层次,std::exception是根结点。这个根类定义了虚成员what(),它返回一个编译器自定义的ntbsc++标准中是“以null结束的字符串”)。每个继承类指定自己的what()的返回值。虽然c++标准没有规定这些值的内容,但我相信标准委员会打算用这个字符串来描述异常的类型或含意的。

    根据这种精神,standard_exception的申明是:

#if !defined inc_structured_exception_

    #define  inc_structured_exception_

 

#include "eh.h"

#include "windows.h"

 

class structured_exception

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

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

go top