summaryrefslogtreecommitdiff
path: root/ACE/contrib/utility/Example/ExH/BadCast
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/contrib/utility/Example/ExH/BadCast')
-rw-r--r--ACE/contrib/utility/Example/ExH/BadCast/Makefile24
-rw-r--r--ACE/contrib/utility/Example/ExH/BadCast/bad_cast.cpp52
2 files changed, 76 insertions, 0 deletions
diff --git a/ACE/contrib/utility/Example/ExH/BadCast/Makefile b/ACE/contrib/utility/Example/ExH/BadCast/Makefile
new file mode 100644
index 00000000000..9963d9708a1
--- /dev/null
+++ b/ACE/contrib/utility/Example/ExH/BadCast/Makefile
@@ -0,0 +1,24 @@
+# file : Example/ExH/BadCast/Makefile
+# author : Boris Kolpackov <boris@kolpackov.net>
+# copyright : Copyright (c) 2002-2003 Boris Kolpackov
+# license : http://kolpackov.net/license.html
+
+root := ../../..
+
+include $(root)/BuildRules/Bootstrap.rules
+
+$(call include, $(root)/BuildRules/Executable.pre.rules)
+
+
+cxx_translation_units := bad_cast.cpp
+
+module_base := bad_cast
+module_prefix :=
+module_suffix :=
+
+
+CXX_PREPROCESS_FLAGS += -I $(root)
+
+
+$(call include, $(root)/BuildRules/Executable.post.rules)
+# $Id$
diff --git a/ACE/contrib/utility/Example/ExH/BadCast/bad_cast.cpp b/ACE/contrib/utility/Example/ExH/BadCast/bad_cast.cpp
new file mode 100644
index 00000000000..cb4a59e26a9
--- /dev/null
+++ b/ACE/contrib/utility/Example/ExH/BadCast/bad_cast.cpp
@@ -0,0 +1,52 @@
+// file : Example/ExH/BadCast/bad_cast.cpp
+// author : Boris Kolpackov <boris@kolpackov.net>
+// copyright : Copyright (c) 2002-2003 Boris Kolpackov
+// license : http://kolpackov.net/license.html
+
+#include "Utility/ExH/System/Exception.hpp"
+
+#include <iostream>
+
+using std::cerr;
+using std::endl;
+
+
+struct A
+{
+ virtual
+ ~A() {}
+};
+
+struct B
+{
+ void
+ foo () {}
+};
+
+void
+foo () throw (Utility::ExH::System::Exception)
+{
+ A a;
+
+ A& ar (a);
+
+ B& br (dynamic_cast<B&> (ar));
+
+ br.foo ();
+}
+
+int
+main ()
+{
+ try
+ {
+ foo ();
+ }
+ catch (Utility::ExH::System::Exception const& ex)
+ {
+ cerr << "Caught Utility::ExH::System::Exception: "
+ << ex.what ()
+ << endl;
+ }
+}
+//$Id$