カスタム例外クラスを作成してスローしてエラーメッセージを表示しようとしていますが、何か間違ったことが起きて例外がスローされず、メッセージが表示されません。C++のカスタム例外メッセージが表示されない
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();
}
};
次のように私はtry
/throw
/catch
にしようとしています:
はここで例外クラスです
void handle_closed_paren(int line_number) {
try {
if (definitely_unbalanced()) {
throw UnbalancedParenthesesException(line_number);
}
} catch (const UnbalancedParenthesesException& e) {
std::out << e.what() << "\n";
}
コンソールでこのエラーに関連するものは何もありません。
ありがとうございます。
'EXCEPTION_MESSAGEを返します。 c_str(); 'は戻り時に破棄されるローカルスタック変数のアドレスを返します。 –
@リチャードクリートン:アンサーはおかげで下に行く –
ありがとう、リチャード。それは確かに問題です。 – progfan