#include #include using namespace std; void Fun1(int i); int main() { int i; for(i =0; i < 4; i++ ) { cout << "Before the try-catch block, i = " << i << endl; try { Fun1(i); } catch (string & e) { cout << "string " << e << endl; } catch ( invalid_argument & e) { cout << "invalid argument " << e.what() << endl; } catch ( out_of_range & e) { cout << "out of range " << e.what() << endl; } catch (...) { cout << "Default catch. " << endl; } cout << "outside of try-catch block " << endl; cout << endl << endl; } return 0; } void Fun1(int i) { cout << "Starting Fun1 i = " << i << endl; switch(i) { case 0: throw invalid_argument ("You can't pass a 0"); break; case 1: throw out_of_range ("One is too low"); break; case 2: throw domain_error("You should not pass a 2"); break; } cout << "Ending Fun1" << endl; return; }