c ++不让main返回[关闭]
Posted
技术标签:
【中文标题】c ++不让main返回[关闭]【英文标题】:c++ not let main return [closed] 【发布时间】:2013-12-13 11:04:43 【问题描述】:我有以下代码:
int main()
Client *c = new Client();
ExitOnlyWhenClientException();
return 0;
所以我不希望 main 仅在客户端抛出异常时返回。我知道我可以使用条件变量,它在客户端的析构函数中发出信号并在主块中等待。
但是还有其他方法吗?
我找到了这个链接How would you implement a basic event-loop?
我的问题与上面的链接相比有点不同,因为它应该知道客户端崩溃了。
编辑 1
我说崩溃了,我的意思是异常。
【问题讨论】:
Client
似乎是一个类。一个类不会崩溃。程序崩溃。因此,如果Client
类中的代码导致崩溃,整个程序就会崩溃。除非你在谈论例外,这是另一回事。
哪个平台?事件循环的概念可能出现在任何基础教程的第一章中。 @SirDarius:很明显他的意思是“当客户端导致崩溃时”。
为什么不在客户端有一个 run 方法,调用它然后你必须等到它完成,要么通过崩溃,要么干净
@SirDarius:是的,我的意思是客户端抛出异常。
【参考方案1】:
让我们用另一个类类型替换Client
:
int main()
std::string *s = new std::string();
ExitOnlyWhenStringException();
return 0;
现在,如果您尝试访问越界元素,std::string::at()
可能会引发异常。事实上,由于*s
是空的,任何索引都会越界。但是,您没有调用 s->at(8)
或任何其他方法。因此,唯一可能的例外是来自new
的std::bad_alloc
。你不需要处理它(任何合理的实现都允许你动态地创建至少一个对象)。
【讨论】:
感谢您的回答。抱歉,我的问题不是很清楚。以上是关于c ++不让main返回[关闭]的主要内容,如果未能解决你的问题,请参考以下文章