首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何模拟尝试--最终还是尝试--除非在没有尝试的语言中

如何模拟尝试--最终还是尝试--除非在没有尝试的语言中
EN

Stack Overflow用户
提问于 2012-01-02 02:23:29
回答 4查看 9.2K关注 0票数 9

在没有的语言中,有什么方法可以模拟try-finallytry-except吗?

如果有一些随机的,不可预测的,异常发生,我需要确保一些清理运行。

我可以尝试确保没有异常抛出,这样我确信我的清理代码总是运行-但这样我就不需要try-finally/except了。

现在,我正试图在Lua中创建一个try-finally;但我认为任何解决方案都可以在其他语言中使用。

尽管在我的一生中,没有语言基础结构提供的管道,我还是想不出如何处理异常。

但问也无妨。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-02 02:31:22

Lua已经有了必要的机制来做一些不完全不同于例外的事情。即pcall.

您可以使用pcall来执行任何Lua函数。如果该函数(或它调用的任何函数)调用error (如果断言条件不为真,则assert调用error ),那么流控制将返回到pcall语句的站点。pcall将返回false和错误消息(传递给error的内容)。

这样,您就可以“抛出”错误并“捕获”它们。您的"try“只是pcall;检查pcall结果的是您的"catch”语句。

另外,请记住: Lua是一个垃圾收集环境。你不需要做任何清理工作。或者,如果您这样做了,您需要更改任何Lua模块需要它。Lua应该是Lua,而不是C或C++ API。

票数 14
EN

Stack Overflow用户

发布于 2012-01-02 02:29:22

从来没有编程在lua (这是什么,你有这个标记)。然而,包括这个http://jessewarden.com/2011/01/lua-for-actionscript-developers.html在内的几个网页提到,受保护的调用(pcall)是lua错误处理设备。

希望这能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2012-01-02 02:50:25

这个Lua异常处理系统怎么样?您还可以使用卢拉伊机制。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8696950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档