1 // { dg-do run } 2 // Testing exception specifications. 3 // Test 3: the bad_exception throw succeeds. 4 5 #include <stdlib.h> 6 #include <exception> 7 8 void my_term () { exit (1); } 9 void my_unexp () { throw 42; } 10 11 void 12 f () throw (std::bad_exception) 13 { 14 throw 'a'; 15 } 16 17 int main () 18 { 19 std::set_terminate (my_term); 20 std::set_unexpected (my_unexp); 21 22 try 23 { 24 f (); 25 } 26 catch (char) 27 { 28 return 2; 29 } 30 catch (int) 31 { 32 return 3; 33 } 34 catch (std::bad_exception) 35 { 36 return 0; 37 } 38 return 5; 39 } 40