J'essaie de créer une classe d'exception personnalisée, la lancer et afficher le message d'erreur, mais je fais quelque chose de mal, provoquant l'exception de ne pas être levée et le message de ne pas être imprimé.Message d'exception personnalisée C++ ne pas afficher
est ici la classe d'exception:
class UnbalancedParenthesesException : public std::exception {
int line_number {0};
public:
UnbalancedParenthesesException(int line_number) :
line_number { line_number }
{}
virtual const char* what() const throw() {
std::string exception_message =
"Papentheses imbalance at line " + std::to_string(line_number) + "\n";
return exception_message.c_str();
}
};
Je suis en train de try
/throw
/catch
comme suit:
void handle_closed_paren(int line_number) {
try {
if (definitely_unbalanced()) {
throw UnbalancedParenthesesException(line_number);
}
} catch (const UnbalancedParenthesesException& e) {
std::out << e.what() << "\n";
}
Il n'y a rien pertinent à cette erreur dans la console.
Merci d'avance.
'EXCEPTION_MESSAGE retour. c_str(); 'renvoie l'adresse d'une variable de pile locale qui sera détruite sur le retour. –
@RichardCritten: Les réponses vont ci-dessous merci –
Merci, Richard. C'est en effet le problème. – progfan