我有一些非常聪明的人继承的代码,他们喜欢使用gotos离开try块,在catch块中完全跳转。

它肯定有效,并且我怀疑这是合法的(我认为C++标准表示从范围退出时,所有内容都会被正确清理,并且我认为这适用于编译器为在我的平台上实现异常而必须执行的操作) 。

这真的合法吗?这不是我写过的东西(一半太聪明了),但显然很有效,我只想了解为什么这样可以。

最佳答案

甚至比C++ 03标准关于跳转语句的部分更具体地讲,它在“异常处理”子句(15/2)中对try-blocks进行了这样的说明:



C++ 11包含相同的措词。

但是请注意,使用goto(或switch)跳入try-block是不合适的:

关于c++ - 尝试退出是否合法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11458830/

10-09 13:25