#include <string>
#include <iostream>
using namespace std;
class Error {
string msg;
public:
Error(string s) : msg(s) {} string get_msg()
{
return msg;
}
};
void goodbye() {
cout << "goodbye!\n";
throw Error("goodbye error");
cout << "goodbye() returns\n";
}
void hello()
{
cout << "hello world!\n";
try
{
goodbye();
}
catch (Error e)
{
throw Error("hello error");
}
cout << "hello() returns\n";
}
int main() {
try {
hello();
cout << "done\n";
}
catch (Error e)
{
cout << e.get_msg() << endl;
}
catch (...)
{
cout << "Unknown error"
<< endl;
}
cout << "main() returns\n";
return 0;
}
这是输出:
hello world!
goodbye!
hello error
main() returns
我知道主要进入hello函数,但我不明白的是堆栈执行的顺序以及抛出错误&#34; hello error&#34;线正在执行。
答案 0 :(得分:0)
hello
函数"hello world!"
goodbye
函数"goodbye!"
Error("goodbye error");
被抛出goodbye
中没有异常处理程序,因此退出Error("goodbye error");
被hello
Error("hello error");
被抛出hello
中没有其他异常处理程序,因此退出Error("hello error");
位于主hello error
)"main() returns"