gpt4 book ai didi

ruby 异常处理:ensure

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章ruby 异常处理:ensure由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

当一个方法结束工作时我们也许需要进行清理工作.也许一个打开的文件需要关闭,缓冲区的数据应清空等等.如果对于每一个方法这里永远只有一个退出点,我们可以心安理得地将我们的清理代码放在一个地方并知道它会被执行;但一个方法可能从多个地方返回,或者因为异常我们的清理代码被意外跳过. 。

begin 。

file=open("/tmp/some_file","w") 。

#...writetothefile... 。

file.close 。

end 。

上面,如果在我们写文件的时候发生异常,文件会保留打开.我们也不希望这样的冗余出现

begin 。

file=open("/tmp/some_file","w") 。

#...writetothefile... 。

file.close 。

rescue 。

file.close 。

fail#raiseanexception 。

end 。

这是个笨办法,当程序增大时,代码将失去控制,因为我们必须处理每一个return和break,. 。

为此,我们向"begin...rescue...end"体系中加入了一个关键字ensure.无论begin块是否成功,ensure代码域都将执行. 。

begin 。

file=open("/tmp/some_file","w") 。

#...writetothefile... 。

rescue 。

#...handletheexceptions... 。

ensure 。

file.close#...andthisalwayshappens. 。

end 。

可以只用ensure或只用rescue,但当它们在同一begin...end域中时,rescue必须放在ensure前面. 。

最后此篇关于ruby 异常处理:ensure的文章就讲到这里了,如果你想了解更多关于ruby 异常处理:ensure的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com