设为首页 加入收藏

TOP

Linux 下 C++ 异常处理技巧(二)
2011-04-28 12:44:42 来源: 作者: 【 】 浏览:2031
Tags:Linux 异常 处理 技巧
requests // pthread_exit(); } }; public: ExceptionHandler() { static SingleTonHandler s_objHandler; } }; ////////////////////////////////////////////////////////////////////////// class A { public: A() { //int i = 0, j = 1/i; *(int *)0 = 0; } }; // Before defining any global variable, we define a dummy instance // of ExceptionHandler object to make sure that // ExceptionHandler::SingleTonHandler::SingleTonHandler() is invoked ExceptionHandler g_objExceptionHandler; A g_a; ////////////////////////////////////////////////////////////////////////// int main(int argc, char* argv[]) { return 0; }

 


处理多线程程序中的异常

有时一些异常没有被捕获,这将造成进程异常中止。不过很多时候,进程包含多个线程,其中少数线程执行核心应用程序逻辑,同时,其余线程为外部请求提供服务。如果服务线程因编程(www.cppentry.com)错误而没有处理某个异常,则会造成整个应用程序崩溃。这一点可能是不受人们欢迎的,因为它会通过向应用程序传送不合法的请求而助长拒绝服务攻击。为了避免这一点,未捕获处理程序可以决定是请求异常中止调用,还是请求线程退出调用。清单 3 中 ExceptionHandler::SingleTonHandler::Handler()

 函数的末尾处展示了该处理程序。
 


结束语

我简单地讨论了少许 C++(www.cppentry.com) 编程(www.cppentry.com)设计模式,以便更好地执行以下任务:

  • 在抛出异常的时候追踪异常的来源。
  • 将信号从内核程序转换成 C++(www.cppentry.com) 异常。
  • 捕获构造和/或析构全局变量期间抛出的异常。
  • 多线程进程中的异常处理。

 

我希望您能采用这些技巧中的一些来开发无忧代码。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇在 Windows 下搭建 Linux 的学习.. 下一篇Crontab

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: