【发布时间】:2017-07-09 06:44:40
【问题描述】:
我正在尝试创建一个自定义异常类,将其抛出并显示错误消息,但我做错了什么,导致异常没有被抛出并且消息没有被打印出来。
这是异常类:
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";
}
控制台中没有与此错误相关的内容。
提前致谢。
【问题讨论】:
-
return exception_message.c_str();返回将在返回时销毁的本地堆栈变量的地址。 -
@RichardCritten:答案在下面谢谢
-
谢谢,理查德。这确实是问题所在。
标签: c++ c++11 exception-handling