title: How can I abstract out a repeating try catch pattern in C++
body: <p>I have a pattern that repeats for several member functions that looks like this:</p>
  
  <pre><code>int myClass::abstract_one(int sig1)
  {
    try {
      return _original-&gt;abstract_one(sig1);
    } catch (std::exception&amp; err) {
      handleException(err);
    } catch (...) {
      handleException();
    }
  }
  
  bool myClass::abstract_two(int sig2)
  {
    try {
      return _original-&gt;abstract_two(sig2);
    } catch (std::exception&amp; err) {
      handleException(err);
    } catch (...) {
      handleException();
    }
  }
  
  [...]
  
  int myClass::abstract_n(bool sig3a, short sig3b)
  {
    try {
      return _original-&gt;abstract_n(sig3a, sig3b);
    } catch (std::exception&amp; err) {
      handleException(err);
    } catch (...) {
      handleException();
    }
  }
  </code></pre>
  
  <p>Where abstract one through n are methods of a pure virtual abstract interface for which <code>myClass</code> and <code>_original</code> are concrete implementations.</p>
  
  <p>I don't like that this pattern repeats in the code and would like to find a way to eliminate the repeating <code>try</code> / <code>catch</code> pattern and code as a single abstraction, but I can't think of a good way to do this in C++ without macros.  I would think that there is a way with templates to do this better.</p>
  
  <p>Please suggest a clean way to refactor this code to abstract out the repeated pattern.</p>