gpt4 book ai didi

c++ - 如何捕获从类的全局实例的构造函数抛出的异常?

转载 作者:IT老高 更新时间:2023-10-28 23:01:45 25 4
gpt4 key购买 nike

我知道拥有全局变量并不受欢迎。但是在 Bjarne Stroustrup 所著的《C++ 编程语言》一书中,作者说“在从非本地静态对象的初始化程序抛出的情况下获得控制的唯一方法是 set_unexpected()”。是怎么做到的?

最佳答案

我在其他一些论坛上发布了这个问题并得到了一些答案。

第一个是声明一个指针而不是拥有一个对象并在main()中初始化它

第二个是从另一个执行 set_terminate 的类派生类(其构造函数抛出异常),以便设置有意义的处理程序。第二个似乎在代码块 ide 中运行良好。

我用来测试检查的代码是:

void f()        //Unexpected exception handler
{
cout<<"Terminate called "<<endl;
exit (0);
}
class A //Base class that performs set_unexpected
{
terminate_handler h;
public:
A()
{
h=set_terminate(f);
}
~A()
{
set_terminate(h);
}
};
class B:public A //Derived class that throws unexpected_exception
{
public:
B()
{
throw 1;
}
};
B b;
int main()
{
}

程序显示消息:“Terminate called”并退出。

关于c++ - 如何捕获从类的全局实例的构造函数抛出的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13696194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com