📄 rethrow6.c
字号:
// { dg-do run }// Testcase for proper handling of rethrow.#include <stdio.h>int c, d;int wrong;struct A{ int i; A () { i = c++; printf ("A() %d\n", i); } A (const A&) { i = c++; printf ("A(const A&) %d\n", i); } ~A() { printf ("~A() %d\n", i); ++d; }};struct B{ ~B () { try { printf ("Rethrowing III...\n"); throw; } catch (A& a) { printf ("Caught III %d...\n", a.i); if (a.i != 1) { printf ("** rethrew uncaught exception **\n"); wrong = 1; } } printf ("continuing to unwind II...\n"); }};intmain (){ { A a; try { try { printf ("Throwing I...\n"); throw a; } catch (A& a) { printf ("Caught I %d...\n", a.i); try { B b; printf ("Throwing II...\n"); throw a; } catch (A& a) { printf ("Caught II %d...\n", a.i); printf ("Throwing IV...\n"); throw; } } } catch (A& a) { printf ("Caught IV %d.\n", a.i); } } printf ("c == %d, d == %d\n", c, d); return c != d || wrong;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -