C# Error handling catch blocks
<p>Why is it adviced most of the time that we should not trap errors like "Exception" but trap errors that we expect as developers. 
Is there a performance hit in trapping generic errors or is it recommended from a best practice point of view?</p>

<pre><code>  try
  {
        // Do something
  }
  catch(Exception e)
  {
        //Log error
  }
</code></pre>
