当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 处理 C++ 中的异常会在语言级别上遇到少许隐含限制,但在某些情况下,您可以绕过它们。
 

 

    摘要:  这是关于如何用各种可以得到的接口为linux开发网络程序的系列文章的第一篇。就像大多数unix-based的操作系统一样,linux支持将tcp/ip作为本地的网络传输协议。在这个系列中,我们假定你已经比较熟悉linux上的c编程和linux的一些系统知识诸如signals,forking等等。   这篇文章是关于如何用bsd套接口创建网络程序的基础介绍 。在下一篇中,我们会解决涉及到建立(......
    摘要:nf ------------------- the number of fields in the current input record. nr ------------------- the total number of input records seen so far. ofmt ------------------- the output format for numbers, &......


Linux 下 C++程序的异常处理技巧
处理 c++ 中的异常会在语言级别上遇到少许隐含限制,但在某些情况下,您可以绕过它们.学习各种利用异常的方法,您就可以生产更可靠的应用程序.

【程序编程相关:操作系统安全防范简述:Win2…

【推荐阅读:感受未来:longhorn4051完全…

  保留异常来源信息 【扩展信息:WindowsServer2003全接触

  在 c++中,无论何时在处理程序内捕获一个异常,关于该异常来源的信息都是不为人知的.异常的具体来源可以提供许多更好地处理该异常的重要信息,或者提供一些可以附加到错误日志的信息,以便以后进行分析.

  为了解决这一问题,可以在抛出异常语句期间,在异常对象的构造函数中生成一个堆栈跟踪.exceptiontracer 是示范这种行为的一个类.

  清单 1. 在异常对象构造函数中生成一个堆栈跟踪

// sample program:

// compiler: gcc 3.2.3 20030502

// linux: red hat

#include <execinfo.h>

#include <signal.h>

#include <exception>

#include <iostream>

using namespace std;

/////////////////////////////////////////////

class exceptiontracer

{

 public:

  exceptiontracer()

  {

   void * array[25];

   int nsize = backtrace(array, 25);

   char ** symbols = backtrace_symbols(array, nsize);

 

   for (int i = 0; i < nsize; i++)

   {

    cout << symbols[i] << endl;

   }

  free(symbols);

 }

};

  管理信号

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

  清单 2 中定义的 signalexceptionclass,提供了表示内核可能发出信号的 c++ 异常的抽象.signaltranslator 是一个基于 signalexceptionclass 的模板类,它通常用来实现到 c++ 异常的转换.
...   下一页
 ·正则表达式模式匹配    »显示摘要«
    摘要:关于正则表达式的一个问题首先明确一下什么是匹配 匹配可以从两个方面来理解 1 一个正则表达式和一个字符串是否匹配 在perl中 =~ 代表捆绑 也就是让正则表达式去匹配指定的字符串 如果如果用匹配的符号形式来表现 对于 /regular/ =~ "string" 如果返回值为真 则说/regular/ 匹配了"string" 2 一个正则表达式不只可以匹配一......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE