加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 转出try块是否合法?

发布时间:2020-12-16 06:48:23 所属栏目:百科 来源:网络整理
导读:我有一些代码,我从一个非常聪明的人那里继承,他们喜欢使用gotos离开try块,完全跳过catch块. 它确实有效,我怀疑这是合法的(我认为C标准说,从范围退出时,一切都得到了适当的清理,我认为这适用于编译器必须做的任何事情来在我的平台上实现异常) . 这真的合法吗
我有一些代码,我从一个非常聪明的人那里继承,他们喜欢使用gotos离开try块,完全跳过catch块.

它确实有效,我怀疑这是合法的(我认为C标准说,从范围退出时,一切都得到了适当的清理,我认为这适用于编译器必须做的任何事情来在我的平台上实现异常) .

这真的合法吗?这不是我写过的东西(太聪明了一半),但它显然有效,我只是想明白为什么这样做.

解决方法

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

A goto,break,return,or continue statement can be used to transfer
control out of a try block or handler. When this happens,each
variable declared in the try block will be destroyed in the context
that directly contains its declaration.

C 11包含相同的措辞.

但请注意,使用goto(或开关)跳转到try块是不行的:

A goto or switch statement shall not be used to transfer control into a try block or into a handler.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读