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@diegodagum.com.