C++ c++;不让主回路返回

C++ c++;不让主回路返回,c++,destructor,C++,Destructor,我有以下代码: int main() { Client *c = new Client(); ExitOnlyWhenClientException(); return 0; } 所以我不希望main只在客户端抛出异常时返回。我知道我可以使用条件变量,它在客户端的析构函数中发送信号,并在主块中等待 但还有其他方法吗 我找到了这个链接 我这里的问题和上面的链接有点不同,因为它应该知道客户端崩溃了 编辑1 我说crash是一个错误,我的意思是异常。让我们用另一个类类型替换客

我有以下代码:

int main()
{
    Client *c = new Client();
    ExitOnlyWhenClientException();
    return 0;
}
所以我不希望main只在客户端抛出异常时返回。我知道我可以使用条件变量,它在客户端的析构函数中发送信号,并在主块中等待

但还有其他方法吗

我找到了这个链接

我这里的问题和上面的链接有点不同,因为它应该知道客户端崩溃了

编辑1


我说crash是一个错误,我的意思是异常。

让我们用另一个类类型替换
客户机

int main()
{
    std::string *s = new std::string();
    ExitOnlyWhenStringException();
    return 0;
}

现在,
std::string::at()
如果试图访问一个越界元素,可能会引发异常。事实上,由于
*s
是空的,所以任何索引都将超出范围。但是,您没有在(8)处调用
s->或任何其他方法。因此,唯一可能的例外是来自
new
std::bad_alloc
。您不需要处理这个问题(任何合理的实现都将允许您动态装箱至少一个对象)。

Client
似乎是一个类。类不会崩溃。一个程序崩溃了。因此,如果
客户机
类中的代码导致崩溃,则整个程序将停止运行。除非你说的是例外,那是另一回事。哪个平台?事件循环的概念可能出现在任何基础教程的第一章中@小天狼星:很明显,他的意思是“当客户端导致崩溃时”。为什么不呢?只要在客户端上有一个run方法,调用它,然后你就必须等待它完成,或者通过崩溃,或者cleanly@SirDarius:是的,我指的是客户的例外。谢谢你的回答。对不起,我不太清楚我的问题。