summaryrefslogtreecommitdiff
path: root/ACE/contrib/utility/Documentation/ExH/Example/hello_world.cpp.html
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/contrib/utility/Documentation/ExH/Example/hello_world.cpp.html')
-rw-r--r--ACE/contrib/utility/Documentation/ExH/Example/hello_world.cpp.html152
1 files changed, 152 insertions, 0 deletions
diff --git a/ACE/contrib/utility/Documentation/ExH/Example/hello_world.cpp.html b/ACE/contrib/utility/Documentation/ExH/Example/hello_world.cpp.html
new file mode 100644
index 00000000000..3d2497f325e
--- /dev/null
+++ b/ACE/contrib/utility/Documentation/ExH/Example/hello_world.cpp.html
@@ -0,0 +1,152 @@
+<html>
+<head>
+<!-- Generated by the Spirit (http://spirit.sf.net) C++ to HTML Converter -->
+<title>
+hello_world.cpp</title>
+<link rel="stylesheet" href="../../../Documentation/Style/CXX.css" type="text/css"></head>
+<body>
+<pre>
+<span class=comment>// file : Example/ExH/HelloWorld/hello_world.cpp
+// author : Boris Kolpackov &lt;boris@kolpackov.net&gt;
+// copyright : Copyright (c) 2002-2003 Boris Kolpackov
+// license : http://kolpackov.net/license.html
+
+</span><span class=preprocessor>#include &lt;cstdlib&gt; // for std::abort ()
+
+</span><span class=preprocessor>#include &lt;string&gt;
+</span><span class=preprocessor>#include &lt;iostream&gt;
+
+</span><span class=preprocessor>#include &quot;Utility/ExH/System/Exception.hpp&quot;
+</span><span class=preprocessor>#include &quot;Utility/ExH/Logic/Exception.hpp&quot;
+
+</span><span class=keyword>using </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>cerr</span><span class=special>;
+</span><span class=keyword>using </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>cout</span><span class=special>;
+</span><span class=keyword>using </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>endl</span><span class=special>;
+
+</span><span class=keyword>using </span><span class=keyword>namespace </span><span class=identifier>Utility</span><span class=special>;
+
+</span><span class=keyword>class </span><span class=identifier>Application
+</span><span class=special>{
+</span><span class=keyword>public</span><span class=special>:
+ </span><span class=keyword>class </span><span class=identifier>Exception </span><span class=special>: </span><span class=keyword>public </span><span class=identifier>ExH</span><span class=special>::</span><span class=identifier>Logic</span><span class=special>::</span><span class=identifier>Exception </span><span class=special>{};
+
+ </span><span class=comment>// Hint: you may want to try again...
+ </span><span class=keyword>class </span><span class=identifier>FeelingDizzy </span><span class=special>: </span><span class=keyword>public </span><span class=identifier>Exception </span><span class=special>{};
+
+ </span><span class=keyword>class </span><span class=identifier>InvalidArg </span><span class=special>: </span><span class=keyword>public </span><span class=identifier>Exception </span><span class=special>{};
+
+</span><span class=keyword>public</span><span class=special>:
+ </span><span class=identifier>Application </span><span class=special>() </span><span class=keyword>throw </span><span class=special>(</span><span class=identifier>ExH</span><span class=special>::</span><span class=identifier>System</span><span class=special>::</span><span class=identifier>Exception</span><span class=special>)
+ </span><span class=special>: </span><span class=comment>// The std::string c-tor may throw any kind of exceptions besides
+ // quite possible std::bad_alloc.
+ </span><span class=identifier>greeting_ </span><span class=special>(</span><span class=string>&quot;Hello, world!&quot;</span><span class=special>)
+ </span><span class=special>{
+ </span><span class=special>}
+
+ </span><span class=identifier>Application </span><span class=special>(</span><span class=keyword>char </span><span class=keyword>const </span><span class=special>* </span><span class=identifier>greeting</span><span class=special>) </span><span class=keyword>throw </span><span class=special>(</span><span class=identifier>InvalidArg</span><span class=special>,
+ </span><span class=identifier>ExH</span><span class=special>::</span><span class=identifier>System</span><span class=special>::</span><span class=identifier>Exception</span><span class=special>)
+ </span><span class=special>: </span><span class=identifier>greeting_ </span><span class=special>(</span><span class=identifier>greeting </span><span class=special>== </span><span class=number>0 </span><span class=special>? </span><span class=string>&quot;&quot; </span><span class=special>: </span><span class=identifier>greeting</span><span class=special>)
+ </span><span class=special>{
+ </span><span class=keyword>if </span><span class=special>(</span><span class=identifier>greeting </span><span class=special>== </span><span class=number>0</span><span class=special>) </span><span class=keyword>throw </span><span class=identifier>InvalidArg </span><span class=special>();
+ </span><span class=special>}
+
+</span><span class=keyword>public</span><span class=special>:
+
+ </span><span class=keyword>void
+ </span><span class=identifier>run </span><span class=special>() </span><span class=keyword>throw </span><span class=special>(</span><span class=identifier>FeelingDizzy</span><span class=special>, </span><span class=identifier>ExH</span><span class=special>::</span><span class=identifier>System</span><span class=special>::</span><span class=identifier>Exception</span><span class=special>)
+ </span><span class=special>{
+ </span><span class=keyword>static </span><span class=keyword>unsigned </span><span class=keyword>int </span><span class=identifier>dizzy_count </span><span class=special>(</span><span class=number>0</span><span class=special>);
+
+ </span><span class=keyword>if </span><span class=special>(</span><span class=identifier>dizzy_count</span><span class=special>++ </span><span class=special>&lt; </span><span class=number>5</span><span class=special>) </span><span class=keyword>throw </span><span class=identifier>FeelingDizzy </span><span class=special>();
+
+ </span><span class=comment>// The next line can throw full bucket of exceptions
+ // not to mention ios_base::failure.
+ </span><span class=identifier>cout </span><span class=special>&lt;&lt; </span><span class=identifier>greeting_</span><span class=special>.</span><span class=identifier>c_str </span><span class=special>() </span><span class=special>&lt;&lt; </span><span class=identifier>endl</span><span class=special>;
+ </span><span class=special>}
+
+</span><span class=keyword>private</span><span class=special>:
+
+ </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>string </span><span class=identifier>greeting_</span><span class=special>;
+</span><span class=special>};
+
+
+
+</span><span class=keyword>int
+</span><span class=identifier>main </span><span class=special>()
+</span><span class=special>{
+ </span><span class=comment>// This is a catch-all layer that should be in use only
+ // if we are really in trouble.
+ </span><span class=keyword>try
+ </span><span class=special>{
+ </span><span class=comment>// 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.
+ </span><span class=keyword>try
+ </span><span class=special>{
+ </span><span class=comment>// This is a catch-logic layer. If we get here it usually
+ // indicates an application logic error.
+ </span><span class=keyword>try
+ </span><span class=special>{
+
+ </span><span class=comment>// Ok, here we go about our application logic.
+ </span><span class=keyword>try
+ </span><span class=special>{
+ </span><span class=keyword>for </span><span class=special>(</span><span class=keyword>int </span><span class=identifier>i </span><span class=special>= </span><span class=number>0</span><span class=special>; </span><span class=identifier>i </span><span class=special>&lt; </span><span class=number>10</span><span class=special>; </span><span class=identifier>i</span><span class=special>++)
+ </span><span class=special>{
+ </span><span class=keyword>try
+ </span><span class=special>{
+ </span><span class=identifier>Application </span><span class=identifier>app </span><span class=special>(</span><span class=string>&quot;Hi dude!&quot;</span><span class=special>);
+ </span><span class=identifier>app</span><span class=special>.</span><span class=identifier>run </span><span class=special>();
+ </span><span class=keyword>break</span><span class=special>;
+ </span><span class=special>}
+ </span><span class=keyword>catch </span><span class=special>(</span><span class=identifier>Application</span><span class=special>::</span><span class=identifier>FeelingDizzy </span><span class=keyword>const</span><span class=special>&amp; </span><span class=special>)
+ </span><span class=special>{
+ </span><span class=keyword>if </span><span class=special>(</span><span class=identifier>i </span><span class=special>== </span><span class=number>9</span><span class=special>)
+ </span><span class=special>{
+ </span><span class=identifier>cerr </span><span class=special>&lt;&lt; </span><span class=string>&quot;Given up!&quot; </span><span class=special>&lt;&lt; </span><span class=identifier>endl</span><span class=special>;
+ </span><span class=keyword>return </span><span class=special>-</span><span class=number>1</span><span class=special>;
+ </span><span class=special>}
+ </span><span class=keyword>else
+ </span><span class=special>{
+ </span><span class=identifier>cerr </span><span class=special>&lt;&lt; </span><span class=string>&quot;Application is feeling dizzy. Trying again...&quot;
+ </span><span class=special>&lt;&lt; </span><span class=identifier>endl</span><span class=special>;
+ </span><span class=special>}
+ </span><span class=special>}
+ </span><span class=special>}
+ </span><span class=special>}
+ </span><span class=keyword>catch </span><span class=special>(</span><span class=identifier>Application</span><span class=special>::</span><span class=identifier>InvalidArg </span><span class=keyword>const</span><span class=special>&amp; </span><span class=special>)
+ </span><span class=special>{
+ </span><span class=identifier>cerr </span><span class=special>&lt;&lt; </span><span class=string>&quot;Cought Application::InvalidArg : ...hmm... strange!&quot;
+ </span><span class=special>&lt;&lt; </span><span class=identifier>endl</span><span class=special>;
+ </span><span class=keyword>return </span><span class=special>-</span><span class=number>1</span><span class=special>;
+ </span><span class=special>}
+ </span><span class=special>}
+ </span><span class=keyword>catch </span><span class=special>(</span><span class=identifier>ExH</span><span class=special>::</span><span class=identifier>Logic</span><span class=special>::</span><span class=identifier>Exception </span><span class=keyword>const</span><span class=special>&amp; </span><span class=identifier>e</span><span class=special>)
+ </span><span class=special>{
+ </span><span class=identifier>cerr </span><span class=special>&lt;&lt; </span><span class=string>&quot;Caught Logic::Exception : &quot; </span><span class=special>&lt;&lt; </span><span class=identifier>e</span><span class=special>.</span><span class=identifier>what </span><span class=special>() </span><span class=special>&lt;&lt; </span><span class=identifier>endl</span><span class=special>;
+ </span><span class=keyword>return </span><span class=special>-</span><span class=number>1</span><span class=special>;
+ </span><span class=special>}
+ </span><span class=special>}
+ </span><span class=keyword>catch </span><span class=special>(</span><span class=keyword>const </span><span class=identifier>ExH</span><span class=special>::</span><span class=identifier>System</span><span class=special>::</span><span class=identifier>Exception</span><span class=special>&amp; </span><span class=identifier>e</span><span class=special>)
+ </span><span class=special>{
+ </span><span class=identifier>cerr </span><span class=special>&lt;&lt; </span><span class=string>&quot;Caught System::Exception : &quot; </span><span class=special>&lt;&lt; </span><span class=identifier>e</span><span class=special>.</span><span class=identifier>what </span><span class=special>() </span><span class=special>&lt;&lt; </span><span class=identifier>endl</span><span class=special>;
+ </span><span class=keyword>return </span><span class=special>-</span><span class=number>1</span><span class=special>;
+ </span><span class=special>}
+ </span><span class=keyword>catch </span><span class=special>(...)
+ </span><span class=special>{
+ </span><span class=identifier>cerr </span><span class=special>&lt;&lt; </span><span class=string>&quot;Caught unknown exception using catch-all handler. &quot; </span><span class=special>&lt;&lt; </span><span class=identifier>endl</span><span class=special>;
+ </span><span class=keyword>return </span><span class=special>-</span><span class=number>1</span><span class=special>;
+ </span><span class=special>}
+ </span><span class=special>}
+ </span><span class=keyword>catch </span><span class=special>(...)
+ </span><span class=special>{
+ </span><span class=comment>// We get here in cases of some hard failure. For example when handling
+ // exception, operator &lt;&lt; throws another exception. Usually application
+ // cannot handle such failures itself so we just propagate it futher.
+ </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>abort </span><span class=special>();
+ </span><span class=special>}
+</span><span class=special>}
+</span></pre>
+</body>
+</html>
+<!-- $Id$ -->