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

  • GitHub Previews Agentic AI in VS Code Copilot

    GitHub announced a raft of improvements to its Copilot AI in the Visual Studio Code editor, including a new "agent mode" in preview that lets developers use the AI technology to write code faster and more accurately.

  • Copilot Engineering in the Cloud with Azure and GitHub

    Who better to lead a full-day deep dive into this tech than two experts from GitHub, which introduced the original "AI pair programmer" and spawned the ubiquitous Copilot moniker?

  • Uno Platform Wants Microsoft to Improve .NET WebAssembly in Two Ways

    Uno Platform, a third-party dev tooling specialist that caters to .NET developers, published a report on the state of WebAssembly, addressing some shortcomings in the .NET implementation it would like to see Microsoft address.

  • Random Neighborhoods Regression Using C#

    Dr. James McCaffrey from Microsoft Research presents a complete end-to-end demonstration of the random neighborhoods regression technique, where the goal is to predict a single numeric value. Compared to other ML regression techniques, advantages are that it can handle both large and small datasets, and the results are highly interpretable.

  • As Some Orgs Restrict DeepSeek AI Usage, Microsoft Offers Models and Dev Guidance

    While some organizations are restricting employee usage of the new open source DeepSeek AI from a Chinese company due to data collection concerns, Microsoft has taken a different approach.

Subscribe on YouTube

Upcoming Training Events