Lua-需要回退/错误处理
我目前正在运行不同发行版的各种Linux机器上使用Lua-需要回退/错误处理,lua,require,awesome-wm,luafilesystem,Lua,Require,Awesome Wm,Luafilesystem,我目前正在运行不同发行版的各种Linux机器上使用awesome窗口管理器。 所有机器都使用相同的(lua)配置文件 一些机器安装了lua文件系统(lfs),而其他机器没有。 我的配置最好使用lfs,但如果没有安装,我希望提供一个备用(次优)回退例程 我的问题是,这一切都很简单: 如何捕获require(lfs)语句引发的错误 要求不是一个神奇的功能。这是一个函数,就像Lua中的其他函数一样。它使用Lua的标准错误信号设施来发送错误信号 因此,您可以从require捕获错误,就像您在Lua中执
awesome
窗口管理器。
所有机器都使用相同的(lua
)配置文件
一些机器安装了lua文件系统(lfs
),而其他机器没有。
我的配置最好使用lfs
,但如果没有安装,我希望提供一个备用(次优)回退例程
我的问题是,这一切都很简单:
- 如何捕获
语句引发的错误require(lfs)
要求
不是一个神奇的功能。这是一个函数,就像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
可能@EgorSkriptunoff:有什么原因你不想投票以重复投票的方式结束吗?我同意重复投票。我只是有点哽咽,我无法在搜索中找到它,但至少其他人现在也能找到答案谢谢大家:)