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]

comments powered by Disqus

Featured

  • C# Language Server Revamps VS 2022 Razor Editor for ASP.NET Core

    Microsoft is touting new capabilities in ASP.NET Core web development in Visual Studio 2022 thanks to a new Razor editor powered by a Razor Language Server.

  • Windows Forms Lives On in .NET 6

    Windows Forms would like you to know that the reports of its death are greatly exaggerated.

  • Uno Platform 4.0 Adds Visual Studio Code Plugin

    Uno Platform 4.0 is out, highlighted by a new extension for working in Microsoft's Visual Studio Code editor.

  • .NET 6 Support Leads New GA Features in Azure Functions Fall Update

    Microsoft announced several new features that are now generally available in the fall update of Azure Functions, used for event-driven serverless computing in the cloud.

Upcoming Events