c ++不要让主要回归

时间:2013-12-13 11:04:43

标签: c++ destructor

我有以下代码:

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

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

但还有另一种方法吗?

我找到了这个链接How would you implement a basic event-loop?

我的问题与上面的链接相比有点不同,因为它知道客户端崩溃了。

编辑1

我犯了一个错误,说崩溃,我的意思是异常。

1 个答案:

答案 0 :(得分:0)

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

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

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