1 // { dg-do run } 2 // Testing exception specifications. 3 // Test 2: the second throw succeeds. 4 5 #include <stdlib.h> 6 #include <exception> 7 my_term()8void my_term () { exit (1); } my_unexp()9void my_unexp () { throw 42; } 10 11 void f()12f () throw (int, std::bad_exception) 13 { 14 throw 'a'; 15 } 16 main()17int 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 0; 33 } 34 catch (std::bad_exception) 35 { 36 return 4; 37 } 38 return 5; 39 } 40