aboutsummaryrefslogtreecommitdiff
path: root/packages/Python/lldbsuite/test/lang/cpp/exceptions/exceptions.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'packages/Python/lldbsuite/test/lang/cpp/exceptions/exceptions.cpp')
-rw-r--r--packages/Python/lldbsuite/test/lang/cpp/exceptions/exceptions.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/packages/Python/lldbsuite/test/lang/cpp/exceptions/exceptions.cpp b/packages/Python/lldbsuite/test/lang/cpp/exceptions/exceptions.cpp
new file mode 100644
index 000000000000..150d420b241b
--- /dev/null
+++ b/packages/Python/lldbsuite/test/lang/cpp/exceptions/exceptions.cpp
@@ -0,0 +1,42 @@
+#include <exception>
+#include <stdio.h>
+
+int throws_exception_on_even (int value);
+int intervening_function (int value);
+int catches_exception (int value);
+
+int
+catches_exception (int value)
+{
+ try
+ {
+ return intervening_function(value); // This is the line you should stop at for catch
+ }
+ catch (int value)
+ {
+ return value;
+ }
+}
+
+int
+intervening_function (int value)
+{
+ return throws_exception_on_even (2 * value);
+}
+
+int
+throws_exception_on_even (int value)
+{
+ printf ("Mod two works: %d.\n", value%2);
+ if (value % 2 == 0)
+ throw 30;
+ else
+ return value;
+}
+
+int
+main ()
+{
+ catches_exception (10); // Stop here
+ return 5;
+}