Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua-需要回退/错误处理_Lua_Require_Awesome Wm_Luafilesystem - Fatal编程技术网

Lua-需要回退/错误处理

Lua-需要回退/错误处理,lua,require,awesome-wm,luafilesystem,Lua,Require,Awesome Wm,Luafilesystem,我目前正在运行不同发行版的各种Linux机器上使用awesome窗口管理器。 所有机器都使用相同的(lua)配置文件 一些机器安装了lua文件系统(lfs),而其他机器没有。 我的配置最好使用lfs,但如果没有安装,我希望提供一个备用(次优)回退例程 我的问题是,这一切都很简单: 如何捕获require(lfs)语句引发的错误 要求不是一个神奇的功能。这是一个函数,就像Lua中的其他函数一样。它使用Lua的标准错误信号设施来发送错误信号 因此,您可以从require捕获错误,就像您在Lua中执

我目前正在运行不同发行版的各种Linux机器上使用
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:有什么原因你不想投票以重复投票的方式结束吗?我同意重复投票。我只是有点哽咽,我无法在搜索中找到它,但至少其他人现在也能找到答案谢谢大家:)