⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hello_world.cpp

📁 ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework)
💻 CPP
字号:
// file      : Example/ExH/HelloWorld/hello_world.cpp// author    : Boris Kolpackov <boris@kolpackov.net>// copyright : Copyright (c) 2002-2003 Boris Kolpackov// license   : http://kolpackov.net/license.html#include <cstdlib> // for std::abort ()#include <string>#include <iostream>#include "Utility/ExH/System/Exception.hpp"#include "Utility/ExH/Logic/Exception.hpp"using std::cerr;using std::cout;using std::endl;using namespace Utility;class Application{public:  class Exception : public ExH::Logic::Exception {};  // Hint: you may want to try again...  class FeelingDizzy  : public Exception {};  class InvalidArg : public Exception {};public:  Application () throw (ExH::System::Exception)      : // The std::string c-tor may throw any kind of exceptions besides        // quite possible std::bad_alloc.        greeting_ ("Hello, world!")  {  }  Application (char const * greeting) throw (InvalidArg,                                             ExH::System::Exception)      : greeting_ (greeting == 0 ? "" : greeting)  {    if (greeting == 0) throw InvalidArg ();  }public:  void  run () throw (FeelingDizzy, ExH::System::Exception)  {    static unsigned int dizzy_count (0);    if (dizzy_count++ < 5) throw FeelingDizzy ();    // The next line can throw full bucket of exceptions    // not to mention ios_base::failure.    cout << greeting_.c_str () << endl;  }private:  std::string  greeting_;};intmain (){  // This is a catch-all layer that should be in use only  // if we are really in trouble.  try  {    // This is a catch-system layer. Here we will catch exceptions like    // bad_alloc, etc. If we get here it means that nobody wanted/managed    // to recover from this kind of errors.    try    {      // This is a catch-logic layer. If we get here it usually      // indicates an application logic error.      try      {        // Ok, here we go about our application logic.        try        {          for (int i = 0; i < 10; i++)          {            try            {              Application app ("Hi dude!");              app.run ();              break;            }            catch (Application::FeelingDizzy const& )            {              if (i == 9)              {                cerr << "Given up!" << endl;                return -1;              }              else              {                cerr << "Application is feeling dizzy. Trying again..."                     << endl;              }            }          }        }        catch (Application::InvalidArg const& )        {          cerr << "Cought Application::InvalidArg : ...hmm... strange!"               << endl;          return -1;        }      }      catch (ExH::Logic::Exception const& e)      {        cerr << "Caught Logic::Exception : " << e.what () << endl;        return -1;      }    }    catch (const ExH::System::Exception& e)    {      cerr << "Caught System::Exception : " << e.what () << endl;      return -1;    }    catch (...)    {      cerr << "Caught unknown exception using catch-all handler. " << endl;      return -1;    }  }  catch (...)  {    // We get here in cases of some hard failure. For example when handling    // exception, operator << throws another exception. Usually application    // cannot handle such failures itself so we just propagate it futher.    std::abort ();  }}//hello_world.cpp,v 1.1 2005/05/24 04:33:12 turkaye Exp

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -