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