c++不让main返回

c++ not let main return

本文关键字:返回 main 不让 c++      更新时间:2023-10-16

我有以下代码:

int main()
{
    Client *c = new Client();
    ExitOnlyWhenClientException();
    return 0;
}

所以我不希望main只在客户端抛出异常时返回。我知道我可以使用条件变量,它在客户端的析构函数中发出信号,并在主块中等待。

但是还有其他方法吗?

我找到了这个链接。你将如何实现一个基本的事件循环?

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

编辑1

我说错了"崩溃",我的意思是"例外"。

让我们用另一种类类型替换Client

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

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