Is `catch(...) { throw; }` a bad practice?
<p>While I agree that catching <code>...</code> <strong>without rethrowing</strong> is indeed wrong, I however believe that using constructs like this:</p>

<pre><code>try
{
  // Stuff
}
catch (...)
{
  // Some cleanup
  throw;
}
</code></pre>

<p>Is acceptable in cases <strong>where RAII is not applicable</strong>. (Please, don't ask... not everybody in my company likes object-oriented programming and RAII is often seen as "useless school stuff"...)</p>

<p>My coworkers says that you should always know what exceptions are to be thrown and that you can always use constructs like:</p>

<pre><code>try
{
  // Stuff
}
catch (exception_type1&amp;)
{
  // Some cleanup
  throw;
}
catch (exception_type2&amp;)
{
  // Some cleanup
  throw;
}
catch (exception_type3&amp;)
{
  // Some cleanup
  throw;
}
</code></pre>

<p>Is there a well admited good practice regarding these situations?</p>
