· [Java论坛][安全论坛][数据库论坛][操作系统论坛]
· [访谈] 网银安全系列访谈之:惊心动魄网银故事
· [热点专题] 网银安全系列 3G上网卡巡礼
· [订阅IT技术周刊][IT资源下载专区][病毒求助专区]
· [热点] 跨站脚本十二问 四步防范Conficker
· [热点] Windows 7 RC版公开下载 憾缺中文版

Linux下C++程序的异常处理技巧 (2)

发布时间:2006.02.23 06:48     来源:51CTO    作者:unknown

管理信号

每当进程执行一个令人讨厌的动作,以致于 Linux? 内核发出一个信号时,该信号都必须被处理。信号处理程序通常会释放一些重要资源并终止应用程序。在这种情况下,堆栈上的所有对象实例都处于未破坏状态。另一方面,如果这些信号被转换成 C++ 异常,那么您可以优雅地调用其构造函数,并安排多层 catch 块,以便更好地处理这些信号。

清单 2 中定义的 SignalExceptionClass,提供了表示内核可能发出信号的 C++ 异常的抽象。SignalTranslator 是一个基于 SignalExceptionClass 的模板类,它通常用来实现到 C++ 异常的转换。在任何瞬间,只能有一个信号处理程序处理一个活动进程的一个信号。因此,SignalTranslator 采用了 singleton 设计模式。整体概念通过用于 SIGSEGV 的 SegmentationFault 类和用于 SIGFPE 的 FloatingPointException 类得到了展示。

清单 2. 将信号转换成异常

template class SignalTranslator

{

 private:

class SingleTonTranslator

{

 public:

SingleTonTranslator()

{

 signal(SignalExceptionClass::GetSignalNumber(), SignalHandler);

}

static void SignalHandler(int)

{

 throw SignalExceptionClass();

}

 };

 public:

SignalTranslator()

{

 static SingleTonTranslator s_objTranslator;

}

};

// An example for SIGSEGV

class SegmentationFault : 
public ExceptionTracer, public exception

{

 public:

static int GetSignalNumber() {return SIGSEGV;}

};

SignalTranslator g_objSegmentationFaultTranslator;

// An example for SIGFPE

class FloatingPointException : 

public ExceptionTracer, public exception

{

 public:

static int GetSignalNumber() {return SIGFPE;}

};

SignalTranslator g_objFloatingPointExceptionTranslator;

<<上一页 1 2 3 下一页>>


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 澄清 Java 的接口与继承机制 (01-04) · 如何在C/C++中调用Java (02-17)
· 微软下一代VS.NET开发包现形 (11-19) · Oracle欲将全部业务转到Linux (11-14)
· Borland推出移动版C++开发工具 (11-14) · 深入剖析WTL—WTL框架窗口分析 (11-11)
· 在可管理C++中封装值类型 (09-26) · 编程技巧20法 (09-20)
· 编程技巧20法之九:转换并保存位图 (09-20) · 编程技巧20法之八:将窗体复制到剪切板 (09-20)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
资讯 通信 IT产品 IT技术 信息化
2009第七届中国电脑商年会直播
·创业投资系列访谈:产业..
·特别策划:视频网站系列..
·专题:网游虚拟货币新规..
专题:6月上市手机新品回顾及7月新机展望
·2009年中国电信业信息化..
·专题:把iPhone 3GS“解..
·WAPI重启国际标准进程 ..
专题:09年中盘点-联想春季打印机新品回顾
·InfoComm 2009 视听与集..
·网游背后的故事 网游服..
·[专题]联想ThinkPad T40..
BizSpark:微软为技术创业企业点燃火花
·社区活动:我的IT求知生..
·访谈:内网安全2009系列..
·安全访谈:网银安全之Sa..