#include <iostream>
#include <memory>
#include <stdexcept>
class Resource {
public:
Resource() { std::cout << "Resource acquired" << std::endl; }
~Resource() { std::cout << "Resource released" << std::endl; }
void use() { std::cout << "Resource used" << std::endl; }
};
class ResourceUser {
private:
std::unique_ptr<Resource> resource;
public:
ResourceUser() : resource(std::make_unique<Resource>()) {}
void performOperation() {
resource->use();
// Simulating an operation that might throw
throw std::runtime_error("Operation failed");
}
};
int main() {
try {
ResourceUser user;
user.performOperation();
} catch (const std::exception& e) {
std::cerr << "Caught exception: " << e.what() << std::endl;
}
return 0;
}