OSDN Git Service

PR c++/28878
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / eh / unexpected1.C
1 // PR 3719
2 // Test that an unexpected handler can rethrow to categorize.
3 // { dg-do run }
4
5 #include <exception>
6
7 extern "C" void abort ();
8
9 struct One { };
10 struct Two { };
11
12 static void
13 handle_unexpected ()
14 {
15   try
16   {
17     throw;
18   }
19   catch (One &)
20   {
21     throw Two ();
22   }
23 }
24
25 static void
26 doit () throw (Two)
27 {
28   throw One ();
29 }
30
31 int main ()
32 {
33   std::set_unexpected (handle_unexpected);
34
35   try
36   {
37     doit ();
38   }
39   catch (Two &)
40   {
41   }
42   catch (...)
43   {
44     abort ();
45   }
46 }