blob: 46ebf5a56aaa80f3d9ca06ac9558f1720702e447 [file] [log] [blame]
#include <cstdio>
#include <cstring>
class Cleanup {
char name[10];
public:
Cleanup(const char* n) {
strcpy(name, n);
}
~Cleanup() {
printf("Cleanup for %s!\n", name);
}
};
static void foo() {
Cleanup C("num");
throw 3;
}
int main(void) {
try {
foo();
} catch (int i) {
printf("Caught %d!\n", i);
}
try {
Cleanup a("a");
throw Cleanup("c");
Cleanup b("b");
} catch (Cleanup &c) {
printf("Caught cleanup!\n");
}
try {
Cleanup a("ap");
throw new Cleanup("cp");
Cleanup b("bp");
} catch (Cleanup *c) {
printf("Caught cleanup!\n");
delete c;
}
return 0;
}