我目前正在运行不同发行版的各种Linux机器上使用awesome
窗口管理器。所有机器都使用相同的(lua
)配置文件。
一些机器安装了lua文件系统(lfs
),而另一些则没有。我的配置最好使用 lfs
,但如果未安装,我想提供一个替代(次优)回退例程。
这是我的问题
,很简单:- 我将如何捕获
require(lfs)
语句引发的错误?
require
不是一个神奇的函数。这是一个与Lua中的任何其他功能一样的功能。它使用 Lua 的标准错误信号工具发出错误信号。
因此,您可以从require
中捕获错误,就像在Lua中执行任何其他功能一样。也就是说,你用pcall
包裹它:
local status, lfs = pcall(require, "lfs")
if(status) then
--lfs exists, so use it.
end
事实上,你可以制作自己的prequire
函数来加载任何东西:
function prequire(...)
local status, lib = pcall(require, ...)
if(status) then return lib end
--Library failed to load, so perhaps return `nil` or something?
return nil
end
local lfs = prequire("lfs")
if(lfs) then
--use lfs.
end