title: terminate called after throwing an instance of 'std::string'
body: <p>I have this binary thats crashing by throwing an exception of type std:string.</p>
  
  <p>Stack trace from a stripped binary:</p>
  
  <pre><code>terminate called after throwing an instance of 'std::string'
  *** Aborted at 1309483487 (unix time) try "date -d @1309483487" if you are using GNU date ***
  PC: @       0x3fb0c30155 (unknown)
  *** SIGABRT (@0xd54) received by PID 3412 (TID 0x40d03940) from PID 3412; stack trace: ***
      @       0x3fb180de70 (unknown)
      @       0x3fb0c30155 (unknown)
      @       0x3fb0c31bf0 (unknown)
      @     0x2aaaaab80cc4 (unknown)
      @     0x2aaaaab7ee36 (unknown)
      @     0x2aaaaab7ee63 (unknown)
      @     0x2aaaaab7ef4a (unknown)
      @           0x4c2622 XYZ::connect()
      @           0x4c3e0f XYZ::refresh()
      @       0x3fb18062f7 (unknown)
      @       0x3fb0cd1e3d (unknown)
  </code></pre>
  
  <p>Now the thing is, the refresh() function does try to catch std::string. It looks like:-</p>
  
  <pre><code>bool XYZ::refresh() {
    try {
      connect();
    } catch (string&amp; s) {
      return false;
    }
    return true;
  }
  </code></pre>
  
  <p>Any idea why is it not getting caught? Or Am I reading the stack trace wrong?</p>