Resource Management in C++: Listing 3
Main program, without using the RAII idiom.
// main.cpp (non-RAII version)
#include <iostream>
#include <stdexcept>
#include "shared_resource.hpp"
using namespace std;
void alpha()
{
shared_resource* resource = create_resource();
try
{
do_alpha_with_resource(resource);
recycle_resource(resource);
}
catch (...)
{
recycle_resource(resource);
throw;
}
}
void beta()
{
shared_resource* resource = create_resource();
try
{
do_beta_with_resource(resource);
recycle_resource(resource);
}
catch (...)
{
recycle_resource(resource);
throw;
}
}
int main()
{
try
{
alpha();
beta();
} catch (exception& ex) {
cout << "Exception: " << ex.what();
// Other code to handle exception...
// ...
}
return 0;
}
About the Author
Diego Dagum is a software architect and developer with more than 20 years of experience. He can be reached at [email protected].