résilier appelé après avoir jeté une instance de 'std::string'

J'ai cette binaires, c'est de s'écraser par la levée d'une exception de type std:string.

Trace de pile d'une dépouillé binaire:

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)

Maintenant, la chose est, le refresh() la fonction ne essayez d'attraper std::string. Il ressemble à:-

bool XYZ::refresh() {
  try {
    connect();
  } catch (string& s) {
    return false;
  }
  return true;
}

Aucune idée pourquoi n'est-il pas de se faire prendre? Ou Suis-je à la lecture de la trace de la pile de mal?

  • Je voudrais essayer d'attraper un const string&.
InformationsquelleAutor Turbo | 2011-07-01