错误处理
动态链接
-
在 Lua 中,动态链接被视为所有其他机制的母机制
-
因此利用它就可以动态地加载任何其他不在 Lua 中的机制
-
package.loadlib
所需两个参数- 库的完整路径
- 正确的函数名称
-
loadlib
函数加载指定的库,并将其链接入 Lua -
它没有调用库中的任何函数
-
而是将一个 C 编写的函数作为 Lua 函数返回
-
如果加载库或查找初始化函数时发生错误,会返回
nil
及一条错误信息
local path = "c:/lua/5.1/socket.so"
local f = package.loadlib(path, "luaopen_socket")
- 通常使用
require
来加载 C 程序库,这个函数会搜索指定的库 - 然后用
loadlib
加载库,并返回初始化函数 - 这个初始化函数应将库中提供的函数注册到 Lua 中,就类似 Lua 代码块中定义了其他函数
错误
-
Lua 是一种扩展语言,通常嵌入在应用程序中
-
如果发生错误时如果直接崩溃或退出,那么我们就无法捕获到错误出现在哪里
-
因此 Lua 只要发生一个错误,就应该结束当前程序块并返回应用程序
-
Lua 中任何未预期条件都会引发一个错误,如:
- 将两个非数字的值相加
- 对一个不是函数的值进行调用操作
- 索引一个不是 Table 的值
-
可以通过调用
error
函数,显式地引发发一个错误- 需要传入一个错误消息的函数
do
print("enter a number:")
n = io.read("*number")
if not n then
error("invalid input")
end
end
-- 与上述代码等效
do
print(&