1/* Copyright 2019-2020 Free Software Foundation, Inc. 2 3 This file is part of GDB. 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 3 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 17 18class my_exception 19{ 20private: 21 int m_value; 22 23public: 24 my_exception (int v) 25 : m_value (v) 26 { 27 /* Nothing. */ 28 } 29}; 30 31void 32bar () 33{ 34 my_exception ex (4); 35 throw ex; /* Throw 1. */ 36} 37 38void 39foo () 40{ 41 for (int i = 0; i < 2; ++i) 42 { 43 try 44 { 45 bar (); 46 } 47 catch (const my_exception &ex) /* Catch 1. */ 48 { 49 if (i == 1) 50 throw; /* Throw 2. */ 51 } 52 } 53} 54 55int 56main () 57{ 58 for (int i = 0; i < 2; ++i) 59 { 60 try 61 { 62 foo (); 63 } 64 catch (const my_exception &ex) /* Catch 2. */ 65 { 66 if (i == 1) 67 return 1; /* Stop here. */ 68 } 69 } 70 71 return 0; 72} 73 74