#include <iostream>
#include <stdexcept>
using namespace std;
class Resource
{
private:
string _name;
bool _exn;
public:
Resource(string name, bool exn) {
_exn = exn;
_name = name;
cout << "Open " << _name << endl;
}
virtual ~Resource() {
cout << "Close " << _name << endl;
if (_exn)
throw runtime_error("EXCEPTION: " + _name);
}
};
void test()
{
Resource a("A", false);
Resource b("B", true);
cout << "test" << endl;
}
int main()
{
try {
test();
} catch (runtime_error& e) {
cout << "CATCH: " << e.what() << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RkZXhjZXB0PgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIFJlc291cmNlCnsKcHJpdmF0ZToKCXN0cmluZyBfbmFtZTsKCWJvb2wgX2V4bjsKcHVibGljOgoJUmVzb3VyY2Uoc3RyaW5nIG5hbWUsIGJvb2wgZXhuKSB7CgkJX2V4biA9IGV4bjsKCQlfbmFtZSA9IG5hbWU7CgkJY291dCA8PCAiT3BlbiAiIDw8IF9uYW1lIDw8IGVuZGw7Cgl9Cgl2aXJ0dWFsIH5SZXNvdXJjZSgpIHsKCQljb3V0IDw8ICJDbG9zZSAiIDw8IF9uYW1lIDw8IGVuZGw7CgkJaWYgKF9leG4pCgkJCXRocm93IHJ1bnRpbWVfZXJyb3IoIkVYQ0VQVElPTjogIiArIF9uYW1lKTsKCX0KfTsKCnZvaWQgdGVzdCgpCnsKCVJlc291cmNlIGEoIkEiLCBmYWxzZSk7CglSZXNvdXJjZSBiKCJCIiwgdHJ1ZSk7Cgljb3V0IDw8ICJ0ZXN0IiA8PCBlbmRsOwp9CgppbnQgbWFpbigpCnsKCXRyeSB7CgkJdGVzdCgpOwoJfSBjYXRjaCAocnVudGltZV9lcnJvciYgZSkgewoJCWNvdXQgPDwgIkNBVENIOiAiIDw8IGUud2hhdCgpIDw8IGVuZGw7Cgl9CglyZXR1cm4gMDsKfQ==