如何在纯Lua中表明错误的习惯方法?

我正在构建一组常用库,用于嵌入 Lua 解释器实例(目标用户是某个产品的用户)。假设我无法更改 Lua 可执行文件的功能,只有基本的标准 Lua 库(数学、字符串等,除了 io)。

在纯 Lua 库中处理运行时错误的惯用方法是什么?

我考虑返回 nil,但这并不表明出了什么问题,特别是如果错误发生在深度嵌套的地方。我接下来考虑返回两个值,nil 和错误代码或描述。我还考虑过一组类似于 Windows API 的 GetLastError(以及对应的 SetError)的全局函数。

你是怎么做的?你认为不同方法的利弊是什么?我应该考虑类似于将所有东西包装在 pcall 中并故意对 userdata 进行索引以引发错误的更激进的方法吗?

原文链接 https://stackoverflow.com/questions/8010193

点赞
stackoverflow用户107090
stackoverflow用户107090

错误无法恢复,应该中止执行。对于这种情况,调用error。否则,返回nilfalse和一个错误消息是 Lua 的标准方式。

2011-11-04 15:09:38