xref: /llvm-project/lldb/test/API/lang/cpp/exceptions/exceptions.cpp (revision 99451b4453688a94c6014cac233d371ab4cc342d)
1*99451b44SJordan Rupprecht #include <exception>
2*99451b44SJordan Rupprecht #include <stdio.h>
3*99451b44SJordan Rupprecht 
4*99451b44SJordan Rupprecht int throws_exception_on_even (int value);
5*99451b44SJordan Rupprecht int intervening_function (int value);
6*99451b44SJordan Rupprecht int catches_exception (int value);
7*99451b44SJordan Rupprecht 
8*99451b44SJordan Rupprecht int
catches_exception(int value)9*99451b44SJordan Rupprecht catches_exception (int value)
10*99451b44SJordan Rupprecht {
11*99451b44SJordan Rupprecht     try
12*99451b44SJordan Rupprecht     {
13*99451b44SJordan Rupprecht         return intervening_function(value); // This is the line you should stop at for catch
14*99451b44SJordan Rupprecht     }
15*99451b44SJordan Rupprecht     catch (int value)
16*99451b44SJordan Rupprecht     {
17*99451b44SJordan Rupprecht         return value;
18*99451b44SJordan Rupprecht     }
19*99451b44SJordan Rupprecht }
20*99451b44SJordan Rupprecht 
21*99451b44SJordan Rupprecht int
intervening_function(int value)22*99451b44SJordan Rupprecht intervening_function (int value)
23*99451b44SJordan Rupprecht {
24*99451b44SJordan Rupprecht     return throws_exception_on_even (2 * value);
25*99451b44SJordan Rupprecht }
26*99451b44SJordan Rupprecht 
27*99451b44SJordan Rupprecht int
throws_exception_on_even(int value)28*99451b44SJordan Rupprecht throws_exception_on_even (int value)
29*99451b44SJordan Rupprecht {
30*99451b44SJordan Rupprecht     printf ("Mod two works: %d.\n", value%2);
31*99451b44SJordan Rupprecht     if (value % 2 == 0)
32*99451b44SJordan Rupprecht         throw 30;
33*99451b44SJordan Rupprecht     else
34*99451b44SJordan Rupprecht         return value;
35*99451b44SJordan Rupprecht }
36*99451b44SJordan Rupprecht 
37*99451b44SJordan Rupprecht int
main()38*99451b44SJordan Rupprecht main ()
39*99451b44SJordan Rupprecht {
40*99451b44SJordan Rupprecht     catches_exception (10); // Stop here
41*99451b44SJordan Rupprecht     return 5;
42*99451b44SJordan Rupprecht }
43