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()8 void my_term ()  { exit (1); }
my_unexp()9 void my_unexp () { throw 42; }
10 
11 void
f()12 f () throw (int, std::bad_exception)
13 {
14   throw 'a';
15 }
16 
main()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 0;
33     }
34   catch (std::bad_exception)
35     {
36       return 4;
37     }
38   return 5;
39 }
40