第一版是为 Lua 5.0 编写的。虽然在很大程度上仍然适用于更高版本,但存在一些差异。
第四版针对 Lua 5.3,可以在 亚马逊 和其他书店购买。
购买本书,您还可以帮助 支持 Lua 项目


24.3.2 – 库代码中的错误处理

Lua 是一种安全语言。这意味着,无论你写什么,无论它有多么错误,你都可以始终根据 Lua 本身来理解程序的行为。此外,错误也会根据 Lua 进行检测和解释。你可以将它与 C 进行对比,在 C 中,许多错误程序的行为只能根据底层硬件进行解释,并且错误位置以程序计数器的形式给出。

每当你向 Lua 添加新的 C 函数时,你都可能破坏这种安全性。例如,像 poke 这样的函数(它将任意字节存储在任意内存地址)可能导致各种内存损坏。你必须努力确保你的加载项对 Lua 是安全的,并提供良好的错误处理。

正如我们前面讨论的,每个 C 程序都有自己处理错误的方式。但是,当你为 Lua 编写库函数时,有一种处理错误的标准方法。每当 C 函数检测到错误时,它只需调用 lua_error(或者更好的是 luaL_error,它会格式化错误消息,然后调用 lua_error)。lua_error 函数会清除 Lua 中需要清除的所有内容,然后跳回到引发该执行的 lua_pcall,同时传递错误消息。