在没有的语言中,有什么方法可以模拟try-finally或try-except吗?
如果有一些随机的,不可预测的,异常发生,我需要确保一些清理运行。
我可以尝试确保没有异常抛出,这样我确信我的清理代码总是运行-但这样我就不需要try-finally/except了。
现在,我正试图在Lua中创建一个try-finally;但我认为任何解决方案都可以在其他语言中使用。
尽管在我的一生中,没有语言基础结构提供的管道,我还是想不出如何处理异常。
但问也无妨。
发布于 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。
发布于 2012-01-02 02:29:22
从来没有编程在lua (这是什么,你有这个标记)。然而,包括这个http://jessewarden.com/2011/01/lua-for-actionscript-developers.html在内的几个网页提到,受保护的调用(pcall)是lua错误处理设备。
希望这能有所帮助。
发布于 2012-01-02 02:50:25
这个Lua异常处理系统怎么样?您还可以使用卢拉伊机制。
https://stackoverflow.com/questions/8696950
复制相似问题