title: Under C# how much of a performance hit is a try, throw and catch block
body: <p>First of all, a disclaimer:
  I have experience in other languages, but am still learning the subtleties of C#</p>
  
  <p>On to the problem...  I am looking at some code, which uses the try/catch blocks in a way that concerns me.   When a parsing routine is called, rather than return an error code, the programmer used the following logic</p>
  
  <pre><code>catch (TclException e) {
    throw new TclRuntimeError("unexpected TclException: " + e.Message,e);
  }  
  </code></pre>
  
  <p>This is caught by the caller, which throws the same error ...<br>
  ... which is caught by the caller, which throws the same error ...<br>
  ..... which is caught by the caller, which throws the same error ...</p>
  
  <p>back up about 6 levels.</p>
  
  <p>Am I right in thinking all these catch/throw blocks are causing a performance problem, or is this a reasonable implementation under C#?</p>