43 lines
		
	
	
		
			696 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			696 B
		
	
	
	
		
			C++
		
	
	
	
| #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;
 | |
| }
 |