第一版是为 Lua 5.0 编写的。虽然在很大程度上仍然适用于更高版本,但存在一些差异。
第四版针对 Lua 5.3,可在 亚马逊 和其他书店购买。
购买本书,您还将帮助支持 Lua 项目。
用 Lua 编程 | ||
第四部分。C API 第 24 章。C API 概述 |
与 C++ 或 Java 不同,C 语言不提供异常处理机制。为了解决这一难题,Lua 使用 C 中的 setjmp
工具,这导致了一种类似于异常处理的机制。(如果您使用 C++ 编译 Lua,则可以轻松更改代码,使其使用真正的异常。)
Lua 中的所有结构都是动态的:它们会根据需要增长,并在可能的情况下最终再次缩小。这意味着在 Lua 中普遍存在内存分配失败的可能性。几乎任何操作都可能面临这种情况。Lua 使用异常来发出这些错误信号,而不是为其 API 中的每个操作使用错误代码。这意味着几乎所有 API 函数都可能引发错误(即调用 longjmp
),而不是返回。
当我们编写库代码(即从 Lua 调用的 C 函数)时,使用长跳转几乎与真正的异常处理工具一样方便,因为 Lua 会捕获任何偶尔发生的错误。但是,当我们编写应用程序代码(即调用 Lua 的 C 代码)时,我们必须提供一种方法来捕获这些错误。
版权所有 © 2003–2004 Roberto Ierusalimschy。保留所有权利。 |