我目前在运行不同发行版的各种Linux计算机上使用awesome
窗口管理器。
所有计算机都使用相同的(lua
)配置文件。
某些机器安装了lua-filesystem(lfs
),而其他机器则没有安装。
我的配置最好使用lfs
,但如果没有安装,我想提供替代(次优)后备程序。
这是我的问题所有这一切的简单性:
require(lfs)
声明引发的错误?答案 0 :(得分:7)
require
不是一个神奇的功能。它就像Lua中的任何其他功能一样。它使用Lua的标准错误信令工具发出错误信号。
因此,您可以像在Lua中执行任何其他功能一样,从require
完全捕获错误。即,您将其包装在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