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