gpt4 book ai didi

exception-handling - 如何在没有它们的语言中模拟 try-finally 或 try-except

转载 作者:行者123 更新时间:2023-12-04 05:25:44 25 4
gpt4 key购买 nike

有没有任意 模拟 try-finally 的方法或 try-except在没有它们的语言中?

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

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

此刻我正在尝试创建一个 try-finally在 Lua 中;但我认为任何解决方案也适用于其他语言。

虽然,在我的一生中,如果没有语言基础设施提供的管道,我无法弄清楚如何处理异常。

但从来没有伤害过问。

最佳答案

Lua 已经有必要的机制来做一些与异常不完全不同的事情。即pcall .

您可以使用 pcall执行任何 Lua 函数。如果该函数(或它调用的任何函数)调用 error (assert 调用 error 如果断言条件不成立),然后流控制将返回到 pcall 的站点陈述。 pcall将返回 false 和错误消息(传递给 error 的内容)。

有了这个,你可以“抛出”错误并“捕捉”它们。您的“尝试”只是 pcall ;您的“catch”语句是检查 pcall结果。

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

关于exception-handling - 如何在没有它们的语言中模拟 try-finally 或 try-except,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8696950/

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