aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.cp/exception.cc
diff options
context:
space:
mode:
authorMichael Chastain <mec@google.com>2004-01-09 05:19:13 +0000
committerMichael Chastain <mec@google.com>2004-01-09 05:19:13 +0000
commit42b190adc91a72248aa914b2dcc33241e547281b (patch)
treecd60ab40c6122abe5c2f5a665d07c8b4484303eb /gdb/testsuite/gdb.cp/exception.cc
parent8f25f06bfe2d8077867b96f82102cef1b5139c08 (diff)
downloadgdb-42b190adc91a72248aa914b2dcc33241e547281b.zip
gdb-42b190adc91a72248aa914b2dcc33241e547281b.tar.gz
gdb-42b190adc91a72248aa914b2dcc33241e547281b.tar.bz2
2004-01-08 Michael Chastain <mec.gnu@mindspring.com>
* gdb.cp/exception.cc: Renamed from gdb.hp/gdb.aCC/exception.cc. * gdb.cp/exception.exp: Renamed from gdb.hp/gdb.aCC/exception.exp.
Diffstat (limited to 'gdb/testsuite/gdb.cp/exception.cc')
-rw-r--r--gdb/testsuite/gdb.cp/exception.cc48
1 files changed, 48 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.cp/exception.cc b/gdb/testsuite/gdb.cp/exception.cc
new file mode 100644
index 0000000..2745932
--- /dev/null
+++ b/gdb/testsuite/gdb.cp/exception.cc
@@ -0,0 +1,48 @@
+// Test file for exception handling support.
+
+#include <iostream.h>
+
+int foo (int i)
+{
+ if (i < 32)
+ throw (int) 13;
+ else
+ return i * 2;
+}
+
+extern "C" int bar (int k, unsigned long eharg, int flag);
+
+int bar (int k, unsigned long eharg, int flag)
+{
+ cout << "k is " << k << " eharg is " << eharg << " flag is " << flag << endl;
+ return 1;
+}
+
+int main()
+{
+ int j;
+
+ try {
+ j = foo (20);
+ }
+ catch (int x) {
+ cout << "Got an except " << x << endl;
+ }
+
+ try {
+ try {
+ j = foo (20);
+ }
+ catch (int x) {
+ cout << "Got an except " << x << endl;
+ throw;
+ }
+ }
+ catch (int y) {
+ cout << "Got an except (rethrown) " << y << endl;
+ }
+
+ // Not caught
+ foo (20);
+
+}