75 votes

c++ exception : throwing std::string

J'aimerais lancer une exception lorsque mes méthodes C++ rencontrent quelque chose de bizarre et ne peuvent pas s'en remettre. Est-il possible de lancer un pointeur std::string ?

Voilà ce que j'avais hâte de faire :

void Foo::Bar(){
  if(!QueryPerformanceTimer(&m_baz)){
    throw new std::String("it's the end of the world!");
  }
}

void Foo:Caller(){
  try{
    this->Bar();// should throw
  }catch(std::String* caught){ // not quite sure the syntax is ok here...
    std::cout<<"Got "<<caught<<std::endl;
  }
}

5voto

Eric Leschinski Points 14289

La façon la plus simple de lancer une exception en C++ :

#include <iostream>
using namespace std;
void purturb(){
    throw "Cannot purturb at this time.";
}
int main() {
    try{
        purturb();
    }
    catch(const char* msg){
        cout << "We caught a message: " << msg << endl;
    }
    cout << "done";
    return 0;
}

Cette empreinte :

We caught a message: Cannot purturb at this time.
done

Si vous attrapez l'exception levée, l'exception est contenue et le programme continue. Si vous n'attrapez pas l'exception, le programme existe et s'imprime :

This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X