我有以下代码:
int main()
{
Client *c = new Client();
ExitOnlyWhenClientException();
return 0;
}
所以我不希望main只在客户端抛出异常时返回。我知道我可以使用条件变量,它在客户端的析构函数中发出信号并在主块中等待。
但还有另一种方法吗?
我找到了这个链接How would you implement a basic event-loop?
我的问题与上面的链接相比有点不同,因为它知道客户端崩溃了。
编辑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}}。您不需要处理它(任何合理的实现都允许您动态创建至少一个对象)。